我定义了一个名为 Node 的函数,它将节点的属性存储在图形数据结构中。函数是这样的:
function Node(){
...
this.outEdges = [];
this.inEdges = [];
...
}
inEdges 和 outEdges 存储 Edge 类型的元素,这是我定义的另一个函数。在程序期间,这些数组被元素填充。
在我的代码中的某个时刻,我需要重置这两个数组,所以我写:
nodes[i].outEdges.length = 0;
nodes[i].inEdges.length = 0;
其中节点是节点类型的元素数组,我正在访问 for 循环中的元素。
问题是,在将 outEdges 和 inEdges 设置为 0 后,我希望它们在节点 [i] 属性列表中是 []。但是,当我将节点 [i] 输出到控制台时,outEdges 和 inEdges 仍然包含其中的元素。奇怪的是,当我将 nodes[i].outEdges 输出到控制台时,它会打印 [] ,这是正确的,但是再次单击 [ ] 会打开元素列表!我真的无法弄清楚为什么节点 [i] 变量不会改变?