题目要求
function convertToTree(regions, rootId = "0") {// TODO: 在这里写入具体的实现逻辑// 将平铺的结构转化为树状结构,并将 rootId 下的所有子节点数组返回// 如果不存在 rootId 下的子节点,则返回一个空数组}module.exports = convertToTree; // 检测需要,请勿删除
题目链接就不放了
1.关键核心,children就是 子类pid == 父类id
function convertToTree(regions, 父类id) {let newArr = [] //存满足需求的值regions.forEach((item)=>{if(item.pid == rootId){ newArr.push(item) //如果找到了就存起来}}) //如果没找到就返回空数组return newArr
}
2.第一代由于没有父类,我们可以默认父类id为0
3.第二代开始我们让rootId等于父类id就行
function convertToTree(regions, rootId = "0") {let newArr = []regions.forEach((item)=>{if(item.pid == rootId){newArr.push(item)item.children = convertToTree(regions , item.id)} //将找到的值赋给子类})return newArr
}
4.我们也可以使用slice过滤掉已经检测过的数组
function convertToTree(regions, rootId = "0") {let newArr = []regions.forEach((item , i)=>{if(item.pid == rootId){newArr.push(item)item.children = convertToTree(regions.slice(i) , item.id)} //将找到的值赋给子类})return newArr
}