递归遍历树形数据中指定的某条数据 & 树形数据转换成一维数组,再根据指定条件返回

递归遍历树形数据中指定的某条数据

// tableTree树形数据
// condition条件
// result结果
recursiveTraversal(tableTree, condition, result) {
  for (let index = 0; index < tableTree.length; index++) {
    const element = tableTree[index]
    if (element.key === condition) {
      result = element
    } else if (element.children && element.children.length > 0) {
      result = this.recursiveTraversal(element.children, condition, result)
    }
  }
  return result
}

树形数据转换成一维数组,再根据指定条件返回

// treeData树形数据
// condition条件
getTreeCurrentNode(treeData, condition) {
  // 多层级结构数据转化一维数据即树形数据转换数组
  const flat = function(arr) {
  // result表示上一次调用回调时的返回值,或初始值(,号后面的[])
  // item表示当前正在处理的元素
    return arr.reduce((result, item) => {
      return result.concat(item, (Array.isArray(item.children) ? flat(item.children) : []))
    }, [])
  }
  const newArr = flat(treeData)
  // 根据条件返回
  return newArr.find(i => i.value === condition)
}

你可能感兴趣的:(js,javascript,开发语言,ecmascript)