添加 enyo.js 后,之前有效的代码现在在 for 循环中失败。我怀疑当我使用for(var ls in list)
时即使长度为 0,它也会循环。当我进行调试时,我发现它正在将“findIndex”视为列表中的值之一并进入循环。我有几个地方使用 for with in,我想找到一种过滤掉“findIndex”或任何无效索引的最佳方法,以便只有有效的元素进入循环
for(var ls in list)
{
var lin = list[ls].rb ;
}
最佳答案
如果列表是一个数组,只需使用常规的 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
}
关于javascript - 使用 "for in"的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28225131/