树的数据处理

89 阅读1分钟

1、tree数据拍平

/**
 * tree数据拍平
 * @param {*} tree 树的数据
 * @param {*} childrenKey 子树的节点
 */
export const treeFlat = (tree, childrenKey = 'children') => {
  let newTree = []
  const loop = (tree, childrenKey) => {
    tree.map(item => {
      newTree.push(item)
      item[childrenKey] && item[childrenKey].length > 0 ? loop(item[childrenKey], childrenKey) : ''
    })
  }
  loop(tree, childrenKey)
  newTree.map(item => {
    delete item[childrenKey]
    return item
  })
  return newTree
}

1、tree的遍历

/**
 * tree的遍历
 * @param {*} tree 树的数据
 * @param {*} childrenKey 子树的节点
 */
export const treeChange = (tree, childrenKey = 'children') => {
  for (let item of tree) {
    item.label = item.name
    if (item[childrenKey] && item[childrenKey].length > 0) {
      treeChange(item[childrenKey], childrenKey)
    }
  }
  return tree
}