javascript数组for循环i + 1返回undefined

时间:2011-05-27 18:32:34

标签: javascript arrays for-loop elements loops

数组ref.length = 7(0 - 6),我想尝试将ref [0] ['x']与ref [1] ['x']匹配我这样做:

   for(var i=0;i<ref.length;i++){
      if( ref[i]['x'] != ref[i+1]['x'] && ref[i+1]['x'].length > 0 )
         //do something
   }

for循环一直迭代到数组6,然后元素6 + 1为空,所以我在if语句行上得到一个错误,说ref [i + 1]是未定义的....

有更好的方法吗?

6 个答案:

答案 0 :(得分:3)

更好:

for (var i=ref.length-2;i>=0;i--)

Javascript将在每次迭代时评估条件,因此通常更倾向于倒退。使用此构造,“ref.length”仅评估一次。我喜欢的另一个替代方案将执行相同的操作:

var i=ref.length-1;
while (i--) {

}

(通常情况下,您在第一个示例中为i=ref.length-1,在第二个示例中为i=ref.length,但您试图保持比数组长度少一个。

答案 1 :(得分:2)

for (var i=0; i<ref.length-1; i++) { // Note the "-1".

这种方式当您使用索引i+1时,您仍处于边界内。

答案 2 :(得分:1)

for (var i = 0; i < ref.length - 1; i++

答案 3 :(得分:0)

怎么样:

for(var i=0;i<ref.length-1;i++){

答案 4 :(得分:0)

如果你只是使用ref.length-1那不会解决你的问题吗?我可能不完全明白你在问什么。

答案 5 :(得分:0)

这是一个简单的解决方案。 再试一次计数器。

if( ref[i]['x'] != ref[++i]['x'] && ref[++i]['x'].length > 0 )