我有以下物件
const categories = [
{
id: 1,
name: "Main",
parent: null
},
{
id: 2,
name: "Computers",
parent: 1
},
{
id: 3,
name: "Components",
parent: 2
},
{
id: 4,
name: "RAM",
parent: 3
}
];
我希望它回傳以下格式
{
"id": 4,
"name": "RAM",
"parent": {
"id": 3,
"name": "Components",
"parent": {
"id": 2,
"name": "Computers",
"parent": {
"id": 1,
"name": "Main",
"parent": null
}
}
}
}
這是我現在擁有的代碼
const recursiveBuild = (node) => {
console.log(node);
if (node.parent === null) {
return node;
}
const parent = categories.find((cat) => cat.id === node.parent);
node.parent = parent;
return recursiveBuild(node.parent);
};
const item4 = categories.find((cat) => cat.id === 4);
const res = recursiveBuild(item4);
最終的結果是我已經穿越到了起點
{id: 1, name: 'Main', parent: null}
我相信我非常接近,但仍然無法破解它。感謝有人可以提供幫助,謝謝
uj5u.com熱心網友回復:
確實,你們很親近。
您需要更改此行:
return recursiveBuild(node.parent);
到這些行:
recursiveBuild(node.parent);
return node;
這是作業片段:
const categories = [
{
id: 1,
name: "Main",
parent: null
},
{
id: 2,
name: "Computers",
parent: 1
},
{
id: 3,
name: "Components",
parent: 2
},
{
id: 4,
name: "RAM",
parent: 3
}
];
const recursiveBuild = (node) => {
if (node.parent === null) {
return node;
}
const parent = categories.find((cat) => cat.id === node.parent);
node.parent = parent;
// return recursiveBuild(node.parent);
recursiveBuild(node.parent);
return node;
};
const item4 = categories.find((cat) => cat.id === 4);
const res = recursiveBuild(item4);
console.log(res);
uj5u.com熱心網友回復:
這對我有用:
const recursiveBuild = (node) => {
/* console.log(node); */
if (node.parent === null) {
return node;
}
const parent = categories.find(cat => cat.id === node.parent);
node.parent = recursiveBuild(parent);
return node;
}
讓我知道是否有任何問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/497385.html
標籤:javascript 递归
下一篇:輸入欄位不允許編輯
