提问者:小点点

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


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

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

并且有些字符串是完全相同的(test)。假设我想获取字符串测试所在数组中的所有索引,而不仅仅是第一个indexOf。这个问题有没有一个好的解决方案,尽可能快,并且不使用jQuery,即得到0,2作为结果?

谢啦


共1个答案

匿名用户

您可以像这样使用内置的Array.原型. for每一个

var indices = [];

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

console.log(indices);

更好的是,您可以像这样使用Array.原型. duce

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);