如何获取数组元素的多个索引

时间:2016-08-31 07:12:22

标签: javascript arrays

indexOf()给出了匹配元素的唯一索引,但我们如何在JavaScript中找到匹配元素的所有索引?

2 个答案:

答案 0 :(得分:1)

我会这样做;

Array.prototype.indicesOf = function(x){
  return this.reduce((p,c,i) => c === x ? p.concat(i) : p ,[]);
};

var arr = [1,2,3,4,1,8,7,6,5];
console.log(arr.indicesOf(1));
console.log(arr.indicesOf(5));
console.log(arr.indicesOf(42));

答案 1 :(得分:0)

Array.prototype.indexesOf = function(el) {
    var ret = [];
    var ix = 0;
    while (true) {
        ix = this.indexOf(el, ix);
        if (ix === -1) break;
        ret.push(ix);
    }
    return ret;
};

然后

[1,2,3,1].indexesOf(1)

应该返回[0,3]