我有一個像這樣的物件陣列
[
{id :1, parent : null, title:test},
{id :2, parent : 1, title:test2},
{id :3, parent : 2, title:test3},
.
.
.
]
并且需要功能來安排這樣的輸出:
[
{id :1, parent : null, title:test,
sub:[
{id :2, parent : 1, title:test2,
sub :[
{id :3, parent : 2, title:test3},
]
},
]},
.
.
.
]
所以處理深度嵌套
uj5u.com熱心網友回復:
這樣的事情應該做你要求的:
function nestArrays(arr) {
let retval = [];
for (let i = data.length - 1; i >= 0; i--) {
const isLastElement = i < data.length - 1;
retval.push(
isLastElement
? {
...data[i],
sub: [retval[retval.length - 1]],
}
: data[i]
);
}
return retval;
}
uj5u.com熱心網友回復:
你可以遍歷你的物件,嘗試通過 ID 找到它的父物件,sub如果它不存在則在父物件上創建一個屬性,最后將當前物件推送到sub陣列:
const objects = [
{ id: 1, parent: null, title: "test" },
{ id: 2, parent: 1, title: "test2" },
{ id: 3, parent: 2, title: "test3" },
{ id: 4, parent: 2, title: "test4" },
];
// This result array will contain all root objects,
// e.g. those with `parent === null`
const roots = [];
for (const object of objects) {
if (object.parent === null) {
roots.push(object);
}
else {
const parent = objects.find(o => o.id === object.parent);
if (parent) {
(parent.sub ||= []).push(object);
}
}
}
console.log(JSON.stringify(roots, null, 2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/318011.html
標籤:javascript 节点.js 反应 json 目的
上一篇:物件作為引數而不宣告變數
