請封裝?個?法,將以下樹形數據轉換成期望的格式
轉化前
const list = [
{id:1},
{pid:1,id:2},
{id:3},
{pid:3,id:4},
{pid:4,id:5}
]
轉化后
[{
id:1,
children:[{
pid:1,
id:2
}]
},
{
id:3,
children:[{
pid:3,
id:4,
children:[{
pid:4,
id:5
}]
}]
}]
getChildren(arr, id) {
const res = [];//根據數據?致性,定義返回的結果
if (!id) { //如果沒有傳?id代表查找第?層數據
res.push(...arr.filter((item) => !item.pid));
} else {//傳?id時,代表查找?節點
res.push(...arr.filter((item) => item.pid === id));
}
res.forEach((item) => {//查找后要遞歸每個節點,從?實現children屬性
const children = getChildren(arr, item.id)
if (children.length) {//如果查找不到就不?賦值了,否則會多?個空數組
item.children = children;
}
});
return res;
}
//調?執?,list是轉換前的數組,返回值是轉換后的數組
getChildren(list)
浙公網安備 33010602011771號