【发布时间】:2017-06-15 14:50:23
【问题描述】:
我有一个如下的数据结构。
array=[
{id:"a",children:[
{id:"b",children:[
{id:"d",children:[]}]},
{id:"c",children:[]}]}
]
如果我想在“c”处插入元素{id:"e", children:["a","f"](“a”、“e”不是字符串,而是节点的副本)我想检查它是否存在于上层树中,因此会创建循环引用。所以我想我必须反向遍历数组。但由于我对 Javascript 和 Node 还很陌生,所以我不知道该怎么做。
创建一个数组并将所有依赖项存储在其中是否是个好主意?像这样:
[
a:[],
b:[a],
c:[a,b]
d:[a,b]
]
然后我可以在数组中查找父级,并会看到在 c 中,a 和 b 都已经存在依赖关系
【问题讨论】:
-
这有点令人困惑,但是像这样插入一个新对象不会创建循环引用,它只是插入一个新对象?要进行循环引用,对象必须实际引用自身。
-
也许我写错了。我不会添加带有“a”、“e”之类的字符串但带有节点副本的项目。所以它会创建一个
-
如果
children : [e]实际上引用了父对象,那么您将有循环引用,但这似乎不太可能,而且大多数时候不会成为问题。无论如何,尚不清楚您要检查什么?插入该对象时,您是否要检查是否没有更多 ID 为"e"的对象,或者该对象还没有循环引用,或者什么? -
我想检查是否有对“a”的引用
-
您必须避免的第一件事是不要将引用自身的对象放入
children属性中。另一方面,我无法想象在什么要求下您最终需要检查循环引用。您是否要嵌套一个平面数据结构..?可能有一些方法可以避免检查您想要实现的任何目标。
标签: javascript arrays node.js data-structures circular-reference