假设我有一个对象数组,每个对象的一个属性是TheID。 像这样:
TheArray[0].TheID = 34;
TheArray[1].TheID = 2352;
...
我希望返回包含我正在寻找的属性TheID的数组的索引。
我有一个经典的for循环:
for (i = 0; i < TheArray.length; i++) {
if (TheArray[i].TheID = MagicNumber) { var TheIndex = i; }
}
retun TheIndex;
这样可行,但它仍然必须循环遍历整个数组,即使它找到了TheIndex。
如何在找到TheIndex后停止循环?
感谢。
答案 0 :(得分:3)
您可以使用break
离开循环:
var TheIndex;
for (var i = 0; i < TheArray.length; i++) {
if (TheArray[i].TheID == MagicNumber) {
TheIndex = i;
break;
}
}
return TheIndex;
答案 1 :(得分:0)
if (TheArray[i].TheID = MagicNumber) { return i; }
答案 2 :(得分:0)
Break;
或return;
可以停止播放。没有其他方法可以搜索数组/对象以获取特定的属性值。您可以考虑完全重新考虑代码,以避免不必要的性能下降,但这并不总是可行的。
答案 3 :(得分:0)
即使这是前一段时间,但如果你做了很多这样的搜索,另一种可能有用的选择就是根据搜索条件循环一次索引。
e.g。这样做一次:
var idToIdx={};
for (var i = 0; i < TheArray.length; i++) {
idToIdx['I'+TheArray[i].TheID] = i
}
}
然后根据需要多次使用idToIdx['I'+ MagicNumber]
。