32 lines
767 B
JavaScript
32 lines
767 B
JavaScript
|
import _ from "lodash";
|
||
|
|
||
|
const nest = (arr) => {
|
||
|
const obj = {};
|
||
|
arr.reduce((o, s) => (o[s] = {}), obj);
|
||
|
return obj;
|
||
|
};
|
||
|
|
||
|
export const asTree = (branches) => {
|
||
|
const nests = branches.map((b)=>nest(b));
|
||
|
return _.merge(...nests);
|
||
|
};
|
||
|
|
||
|
export const asBranches = (array) => {
|
||
|
const merged = [];
|
||
|
array.forEach((p, i) => {
|
||
|
p.forEach((v, i) => {
|
||
|
if (!merged[i]) merged[i] = [];
|
||
|
if (!merged[i].includes(v)) merged[i].push(v);
|
||
|
});
|
||
|
});
|
||
|
return merged;
|
||
|
}
|
||
|
|
||
|
export const as1d = (a) => [].concat.apply([], a);
|
||
|
|
||
|
export const selectBranch = (map,test) => {
|
||
|
const pipeline = map.find((pm)=>pm.includes(test));
|
||
|
const testIndex = pipeline.findIndex((t) => t === test);
|
||
|
return pipeline.slice(0, testIndex + 1);
|
||
|
}
|