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