js查找一个数组里面所有相同的值的索引
前言:
我有一个1个数组,如:
var arry = ['a','a','b','a','c']
现在我想要取回所有索引'a'
,即0,1和3.
有没有简单的解决方案?
一、原生js的写法
Array
Object方法
Array.prototype.multiIndexOf = function (el) {
var idxs = [];
for (var i = this.length - 1; i >= 0; i--) {
if (this[i] === el) {
idxs.unshift(i);
}
}
return idxs;
};
使用的时候回调
var arry = ['a','a','b','a','c'];
arry.multiIndexOf('a');
打印结果: [0, 1, 3]
您可以使用Array#reducewithArray#concat来检查想要的项目,获取索引或空数组。
二、Array#reduce with Array#concat
var arry = ['a', 'a', 'b', 'a', 'c'],
indices = arry.reduce((r, v, i) => r.concat(v === 'a' ? i : []), []);
console.log(indices);
打印结果: [0, 1, 3]
三、ES5的写法:
var arry = ['a', 'a', 'b', 'a', 'c'],
indices = arry.reduce(function (r, v, i) {
return r.concat(v === 'a' ? i : []);
}, []);
console.log(indices);
打印结果:[0, 1, 3]