转换成
转换方法:
function arrToTree(data) { if(!Array.isArray(data)) return data if(!data.length) return data let nData = JSON.parse(JSON.stringify(data)) // 数组深拷贝,避免影响源数据 let result = [] let map = {}; nData.forEach(item => { // 遍历数组 把每一项的引用放入map对象里 map[item.id] = item; }); nData.forEach(item => { // 再次遍历数组 决定item的去向 let parent = map[item.parentId]; if (parent) { // 如果 map[item.parentId] 有值 则 parent 为 item 的父级 // 判断 parent 里有无children 如果没有则创建 如果有则直接把 item push到children里 (parent.children || (parent.children = [])).push(item); } else { // 如果 map[item.parentId] 找不到值 说明此 item 为 第一级 result.push(item); } }); return result; }