gpt4 book ai didi

javascript - 从自引用数组转换为树中的嵌套数组

转载 作者:行者123 更新时间:2023-11-29 16:59:31 25 4
gpt4 key购买 nike

我使用 angular-bootstrap-nav-tree

我有从自引用表中获取的数组,如下所示:

var obj = [
{id:1,label:"Animal"},
{id:2,label:"Vigitable"},
{id:3,label:"Cats",parent:1},
{id:4,label:"black cat",parent:3},
{id:5,label:"orange",parent:2},
];

我想把它转换成这样的嵌套:

var convrted = [
{id:1,label:"Animal",children[
{id:3,label:"Cats",parent:1,children[{id:4,label:"black cat",parent:3}]}
]},
{id:2,label:"Vigitable",children[
{id:5,label:"orange",parent:2}
]}
];

我希望它能无限动态地工作。

最佳答案

这将完成工作:

function nest (array) {
nested = [];
for (var i = 0; i < array.length; i++) {
var parent = array[i].parent;
if (!parent) {
nested.push(array[i]);
} else {
// You'll want to replace this with a more efficient search
for (var j = 0; j < array.length; j++) {
if (array[j].id === parent) {
array[j].children = array[j].children || [];
array[j].children.push(array[i]);
}
}
}
}
return nested;
}

第二个 for 循环是一种低效的查找父级的方法;如果您有多个项目要嵌套,您会想要用不会扫描整个阵列的东西替换它。

关于javascript - 从自引用数组转换为树中的嵌套数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com