繁体   English   中英

循环 i+1 的 javascript 数组返回未定义

[英]javascript array for loop i+1 returning undefined

数组 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] 未定义....

有一个更好的方法吗?

更好的:

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

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

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

}

(通常你在第一个例子中是i=ref.length-1 ,在第二个例子中是i=ref.length ,但你试图保持比数组长度小一)。

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

这样,当您使用索引i+1时,您仍然处于界限内。

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

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

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

关于什么:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM