非常简单的javaScript代码不起作用

时间:2017-03-16 19:31:34

标签: javascript arrays node.js

我使用nodeJs做一些简单的数据处理。 Links是包含源和目标的对象的数组。

例如:

Links=[{source: 'a', target: 'b'},{source: 'b', target: 'c'}]

现在我想添加4个链接到链接,但它不起作用

for(var i=0;i<Links.length;i++){
    for(var j=0;j<2;j++){
      Links.push({
        source: 'yo',
        target: 'yo'
      });
    }
  }

整个程序都停留在这里(进行无限循环)。

2 个答案:

答案 0 :(得分:6)

很简单,您要将项目添加到要推送的列表中,这样您就永远无法达到目的。最简单的方法是将数组的长度保存到变量并使用它而不是每次迭代计算Links.length

答案 1 :(得分:0)

如果在循环中向数组添加项,则使用数组的length属性将导致无限循环。您应该将长度存储在变量中,而不是使用条件中的长度。

如果数组中有两个以上的元素,则在这种情况下使用嵌套循环可能会导致问题。目前,您为数组中已有的每个元素添加了两个元素。这意味着它将添加6个链接,它在循环开始时在数组中有3个链接,如果有4个则为8,依此类推。

你可以这样做,严格将4个链接附加到你的数组,无论一开始有多少链接。

startLength = Link.length;

do {
    Link.push({
        source:'yo',
        target:'yo'
    });
} while (Link.length < startLength + 4);