javascript - 如何获取数组中所有出现的相同值的索引?

标签 javascript arrays indexof

我在一个数组中使用一组数值,其中重复某些值。我想找到重复值出现的 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/

相关文章:

javascript - 从 iframe 事件中监听

javascript - 如何在JS中更高效地描述if条件?

JavaScript - 如何从数组数组中删除所有字母

java - 无法对字符串数组调用indexOf?

php - 使用ajax更新股票价格

javascript - jQuery 语法不设置对象属性

c - 乱码输出

java - 如何只检索字符串中的某些字符?

vb.net - For Each 循环通过 DataGridViewColumn 标题

javascript - jQuery html() 与其他函数链接时序问题