Skip to content

walkSelf - 遍历树结构 #12

@bravf

Description

@bravf
// aftercallback: 先执行层级深的
// beforecallback: 先执行层级浅的
const walkSelf = (o, afterCallback = noFunc, beforeCallback = noFunc) => {
  const go = (o, parent, zIndex) => {
    // 当前深度
    zIndex = zIndex || 0
    // 儿子们计算完的结果集
    let childrenResult = []

    beforeCallback(o, parent, zIndex)

    if (o.children.length){
      childrenResult = o.children.map(i => go(i, o, zIndex + 1))
    }

    return afterCallback(o, parent, childrenResult, zIndex)
  }

  return go(o)
}

递归遍历,可以指定afterCallback、beforeCallback,callback中携带深度值和子结果集。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions