js 遍历多层组织树

老规矩直接上代码

//递归器,遍历处理树形结构
//参数:列表(多个树形结构哦),子节点属性名,每个节点需要调用的方法,是否只在叶子节点执行该方法
export function ergodicNodes(list, childName, func, isOnlyLeaf) {
  list.forEach((item) => {
    if (item[childName] && item[childName].length > 0) {
      ergodicNodes(item[childName], childName,func,isOnlyLeaf);
      if (!isOnlyLeaf) {
        for (let key in item) {
          func(item)
        }
        return
      }
    } else {
      for (let key in item) {
        func(item)
      }
      return
    }
  })
  return list;
}

调用实现

this.options = ergodicNodes(
        this.options,
        "children",
        (item) => {
          item.disabled = false
        },
      false)

参考:https://zhuanlan.zhihu.com/p/377356029

posted @ 2022-03-15 18:39  虚无——缥缈  阅读(328)  评论(0编辑  收藏  举报