在数组上使用indexOf方法,获取所有索引而不仅仅是第一个

时间:2014-10-02 07:40:06

标签: javascript arrays indexof

假设我有一个包含字符串的数组:

var array = ["test","apple","orange","test","banana"];

和一些字符串完全相同(测试)。假设我想获取数组中所有索引,其中字符串 test 位于数组中,而不仅仅是第一个indexOf。有没有一个很好的解决方案,这个问题尽可能快,而不是使用jQuery,因此我得到0,2?

由于

1 个答案:

答案 0 :(得分:0)

您可以像这样使用内置Array.prototype.forEach

var indices = [];

array.forEach(function(currentItem, index) {
    if (currentItem === "test") {
        indices.push(index);
    }
});

console.log(indices);

更好的是,你可以像这样使用Array.prototype.reduce

var indices = array.reduce(function(result, currentItem, index) {
    if (currentItem === "test") {
        result.push(index);
    }
    return result;
}, []);

console.log(indices);

由于您希望解决方案在IE中工作,您可能希望使用普通的旧循环,例如

var indices = [], i;

for (i = 0; i < array.length; i += 1) {
    if (array[i] === "test") {
        indices.push(i);
    }
}

console.log(indices);