javascript在对象数组中查找元素

时间:2011-11-22 21:42:20

标签: javascript

假设我有一个对象数组,每个对象的一个​​属性是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后停止循环?

感谢。

4 个答案:

答案 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]