fix(perf): improve flattenNodes

This commit is contained in:
Christopher Möller
2021-10-20 18:06:41 +02:00
parent 767fbd4377
commit 9350884836
2 changed files with 101 additions and 17 deletions
+24 -8
View File
@@ -343,12 +343,28 @@ export function applyEdgeChanges(changes: EdgeChange[], edges: Edge[]): Edge[] {
return applyChanges(changes, edges) as Edge[];
}
export function flattenNodes(nodes: Node[] | undefined): Node[] {
if (!nodes) {
return [];
}
return nodes.reduce<Node[]>((result, node) => {
return result.concat([node, ...flattenNodes(node.childNodes)]);
}, []);
function flat(arr: Node[], target: Node[]) {
arr.forEach(function (el) {
if (el.childNodes) {
flat(el.childNodes, target);
} else {
target.push(el);
}
});
}
export function flattenNodes(nodes: Node[]): Node[] {
const flattened: Node[] = [];
flat(nodes, flattened);
return flattened;
// return nodes.reduce<Node[]>((result, node) => {
// result.push(node);
// if (node.childNodes) {
// result.push(...flattenNodes(node.childNodes));
// }
// return result;
// }, []);
}