我试图在 JavaScript 数组中查找元素(例如“Nano”)的所有实例的索引。
var Cars = ["Nano", "Volvo", "BMW", "Nano", "VW", "Nano"];
I tried jQuery.inArray http://api.jquery.com/jQuery.inArray/,或类似地,。指数() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf,但它只给出了元素最后一个实例的索引,即本例中的 5。
我如何为所有实例获取它?
The .indexOf() method https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf有一个可选的第二个参数,用于指定开始搜索的索引,因此您可以在循环中调用它来查找特定值的所有实例:
function getAllIndexes(arr, val) {
var indexes = [], i = -1;
while ((i = arr.indexOf(val, i+1)) != -1){
indexes.push(i);
}
return indexes;
}
var indexes = getAllIndexes(Cars, "Nano");
您并没有真正弄清楚要如何使用索引,因此我的函数将它们作为数组返回(或者如果找不到值则返回空数组),但是您可以对各个索引值执行其他操作循环内。
更新:根据 VisioN 的评论,一个简单的 for 循环可以更有效地完成相同的工作,并且更容易理解,因此更容易维护:
function getAllIndexes(arr, val) {
var indexes = [], i;
for(i = 0; i < arr.length; i++)
if (arr[i] === val)
indexes.push(i);
return indexes;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)