javascript数组索引测试

时间:2010-09-21 14:33:04

标签: javascript

如果我有一个我正在循环的数组myArray

for(var i=0;i<myArray.length;i++) {
   if(myArray[i] == myArray[i+1])
      //do something
}

显然,myArray[i+1]将在最后一次迭代时失败。如果i == (myArray.length - 1)没有测试,是否有一种干净的方法可以在if语句上失败,只是让它评估为false(如果myArray[i+1]超出界限)?

2 个答案:

答案 0 :(得分:4)

为什么不迭代到第(N-2)项?

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

如果必须迭代到最后,一般工作的唯一方法是明确检查索引是否有效。任

for (var i = 0; i < myArray.length; ++ i)
  if (i+1 != myArray.length) {
    ...

for (var i = 0; i < myArray.length; ++ i)
  if (!(i+1 in myArray)) {
    ...

但是,如果您可以确保数组中的所有项目都不能是undefinednull,那么原始代码已经有效,因为索引越界将返回undefined,除非undefined == x也是xundefined,否则null将为false。

答案 1 :(得分:0)