我正在嘗試創建一個函式,該函式按級別按陣列順序記錄所有層次結構。
嘗試了很多東西,但無法真正弄清楚。
希望你能幫幫我。
const arr = [
{ id: 1, parent_id: 8, level: 2, name: "person1" },
{ id: 2, parent_id: 1, level: 3, name: "person2" },
{ id: 8, parent_id: 0, level: 1, name: "person3" }
];
const func = (arr, level) => {
}
所以通過給出級別 3 的層次結構將是 person2 => person1(因為 parent_id 是 1) => person3(因為 parent_id 是 8)
感謝您的幫助!
uj5u.com熱心網友回復:
一種方法是更改??函式,以便您可以遞回呼叫它,然后我們可以呼叫“我們自己”,直到找不到父物件:
const arr = [
{ id: 1, parent_id: 8, level: 2, name: "person1" },
{ id: 2, parent_id: 1, level: 3, name: "person2" },
{ id: 8, parent_id: 0, level: 1, name: "person3" }
];
const getMatch = (arr, level, isParent = false) => {
const key = (isParent) ? 'id' : 'level';
const match = arr.filter(a => a[key] === level)[0];
if (!match) { return false; }
const parent = getMatch(arr, match.parent_id, true);
return (parent) ? { ...match, parent } : match;
}
const res = getMatch(arr, 3);
console.log(res);
{
"id": 2,
"parent_id": 1,
"level": 3,
"name": "person2",
"parent": {
"id": 1,
"parent_id": 8,
"level": 2,
"name": "person1",
"parent": {
"id": 8,
"parent_id": 0,
"level": 1,
"name": "person3"
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/458856.html
上一篇:根據特定值在陣列中查找某個索引
