lanrri

V1

2022/06/28阅读:28主题:全栈蓝

代码片段

代码片段

扁平数据结构转树结构数据

/**
 * 扁平数据结构转树结构数据
 * @param {array} arr 扁平数据
 * @param {string} pidKey 默认{pid}
 * @returns {array} 树结构数据
 */

const arr2Tree = (arr, pidKey = 'pid') => {
  const result = arr.reduce((res, next) => {
    const nextPid = next[pidKey]
    res[nextPid] ? res[nextPid].push(next) : res[nextPid] = [next]
    return res
  }, {})
  const resultKeyArr = Object.keys(result)
  resultKeyArr.map((key) => {
    const resultItem = result[key]
    resultItem.map((item) => {
      if (result[item.id]) {
        item.children = result[item.id]
      }
    })
  })
  return result[resultKeyArr[0]]
};

树结构数据结构转扁平数据

/**
 * 树结构数据结构转扁平数据
 * @param {array} arr 树结构数据
 * @returns {array} 扁平数据
 */

const flatten = (arr) => {
  return arr.reduce((flat, {children = [], ...res}) => {
    return flat.concat(res, flatten(children));
  }, []);
}

分类:

前端

标签:

JavaScript

作者介绍

lanrri
V1