2011-05-27 109 views
0

array ref.length = 7(0 - 6),我想尝试将ref [0] ['x']与ref [1] ['x']匹配我这样做:javascript数组for循环i + 1返回undefined

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语句行说裁判的错误[I + 1]是未定义....

有没有更好的方法来做到这一点?

回答

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

当你使用你仍然在边界指数i+1这种方式。

1

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

+5

我是唯一一个喜欢前戏,也许在演出前后有点谈话的人? – 2011-05-28 14:04:53

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在第二,但你试图留比数组长度的一个更小)。

0

什么:

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

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

0

这是一个简单的解决方案。 只需再次计数柜台。

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