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