题目要求
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
}