zhengyiming
13 小时以前 d7c8a3a9e1fc5c8e596a17cdadb7079d20e52297
src/utils/common/tree.ts
@@ -1,3 +1,5 @@
import { TreeNodeData } from 'element-plus/es/components/tree/src/tree.type';
export function getTree(
  data: API.ModuleDto[],
  root?: string,
@@ -44,3 +46,27 @@
  return result;
}
type TreeCallback<T extends TreeNodeData, R> = (
  data: T,
  index: number,
  array: T[],
  parent?: T
) => R;
export function treeEach<T extends TreeNodeData>(
  treeData: T[],
  callback: TreeCallback<T, void>,
  getChildren: (data: T) => T[],
  parent?: T
) {
  for (let i = 0; i < treeData.length; i++) {
    const data = treeData[i];
    callback(data, i, treeData, parent);
    const children = getChildren(data);
    if (Array.isArray(children)) {
      treeEach(children, callback, getChildren, data);
    }
  }
}