我在一个数组中使用一组数值,其中重复某些值。我想找到重复值出现的 ALL 的索引。
例如,我有以下使用 indexOf()
的代码:
var dataset = [2,2,4,2,6,4,7,8];
return dataset.indexOf(2);
但这只给出了 2
第一次出现的索引。 (即它返回值 0
。)
但是,我希望返回所有出现的 2
的索引(即 0,1,3
)。我怎样才能做到这一点? (我知道我可以使用 for
循环,但我想知道是否有更好的方法来执行此操作而无需遍历整个数组。基本上,我试图节省显式的开销遍历整个数组。)
最佳答案
@Bagavatu:如果你不想使用 for 循环,你可以试试这个 fiddle -
var dataset = [2,2,4,2,6,4,7,8];
var results = [];
var ind
// the while loop stops when there are no more found
while( ( ind = dataset.indexOf( 2 ) ) != -1 ){
results.push( ind + results.length )
dataset.splice( ind, 1 )
}
return results;
注意:使用 for 循环会更快。查看评论。
var dataset = [2,2,4,2,6,4,7,8];
var results = [];
for ( i=0; i < dataset.length; i++ ){
if ( dataset[i] == 2 ){
results.push( i );
}
}
return results;
关于javascript - 如何获取数组中所有出现的相同值的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17312328/