gpt4 book ai didi

javascript - 防止 Javascript 数组中的循环引用

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:03 25 4
gpt4 key购买 nike

我有一个如下所示的数据结构。

array=[
{id:"a",children:[
{id:"b",children:[
{id:"d",children:[]}]},
{id:"c",children:[]}]}
]

如果我想在“c”处插入元素{id:"e",children:["a","f"]("a","e"不是字符串,但 Node 的副本)我想检查它是否存在于上层树中,因此会创建循环引用。所以我想我必须反向遍历数组。但由于我对 Javascript 和 Node 还很陌生,所以我不知道该怎么做。

创建一个数组并将所有依赖项存储在其中是个好主意吗?像这样的东西:

[
a:[],
b:[a],
c:[a,b]
d:[a,b]
]

然后我可以在数组中查找父级,并会看到在 c 中,a 和 b 都已准备好依赖

最佳答案

如果 id 是唯一的,您可以使用哈希表。

var array = [{ id: "a", children: [{ id:"b", children: [{ id: "d", children: [] }] }, { id: "c", children: [] }]  }],
hash = Object.create(null);

// creating circular reference
array[0].children[1].children.push(array[0]);

array.forEach(function iter(a) {
if (hash[a.id]) {
console.log(a.id, 'circular reference found');
return;
}
hash[a.id] = true;
a.children.forEach(iter);
});
console.log(array);

关于javascript - 防止 Javascript 数组中的循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44570610/

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