mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-28 17:50:56 +01:00
28 lines
698 B
Go
28 lines
698 B
Go
type HandleNodeFn<T extends TreeNode> = (parentNode: T, node: T) => T;
|
|
|
|
const getNormalizedNodes = <T extends TreeNode>(
|
|
node: T,
|
|
handleNodeFn?: HandleNodeFn<T>
|
|
): T[] => {
|
|
let nodes = [] as T[];
|
|
nodes.push(node);
|
|
node.children?.forEach((subNode: T) => {
|
|
if (handleNodeFn) {
|
|
subNode = handleNodeFn(node, subNode);
|
|
}
|
|
nodes = nodes.concat(getNormalizedNodes(subNode, handleNodeFn));
|
|
});
|
|
return nodes;
|
|
};
|
|
|
|
export const normalizeTree = <T extends TreeNode>(
|
|
nodes: T[],
|
|
handleNodeFn?: HandleNodeFn<T>
|
|
): T[] => {
|
|
let results = [] as T[];
|
|
nodes.forEach(node => {
|
|
results = results.concat(getNormalizedNodes<T>(node, handleNodeFn));
|
|
});
|
|
return results;
|
|
};
|