js数组转树结构

const arr = [
  { id: 1, parent_id: null },
  { id: 2, parent_id: 1 },
  { id: 3, parent_id: 1 },
  { id: 4, parent_id: 2 },
  { id: 5, parent_id: 4 },
]
const data = arr2Tree(arr)
console.log(data)
// function arr2Tree(arr) {
//   let res = []
//   let obj ={}
//   arr.forEach(item => obj[item.id] = item)
//   arr.forEach(item => {
//     const parent = obj[item['parent_id']]
//     if (parent) {
//       (parent.children || (parent.children = [])).push(item)
//     } else {
//       res.push(item)
//     }
//   })
//   return res
// }
function arr2Tree(arr, id = null, parentName = 'parent_id') {
  return arr.filter(item => item[parentName] === id).map(item => ({...item,children: arr2Tree(arr,item.id)}))
}
上一篇:webpack 之(29) optiization配置详解


下一篇:最小生成树算法模板 Java实现