使用“for in”的最佳方式

时间:2015-01-29 21:40:00

标签: javascript enyo

在我添加enyo.js之后,以前工作的代码现在在for循环中失败了。我怀疑当我使用for(var ls in list)时,即使长度为0,它也会循环播放。当我调试时,我发现它正在考虑" findIndex"作为列表中的值之一并进入循环。我有几个地方用于in in,我想找出一个最好的方法来过滤掉" findIndex"或任何无效索引,以便只有有效的元素进入循环

for(var ls in list)
  {
    var lin = list[ls].rb ;

  }

1 个答案:

答案 0 :(得分:2)

如果list是一个数组,只需使用常规for循环。出于这个原因,将for...in与数组一起使用通常不是一个好主意,也因为订单无法保证。

如果您必须使用for...in,请使用hasOwnProperty支票:

for (var ls in list)
{
   if (list.hasOwnProperty(ls)) {
       var lin = list[ls].rb;
       // ...
   }
}

当然,如果您只关心的是您是否拥有rb属性,那么您可以进行测试:

if (list[ls].rb) {
    var lin = list[ls].rb;
}

甚至:

var lin = list[ls].rb;
if (lin) {
    // do whatever you needed to do with lin
}