Javascript 获取项的索引并将索引放入不同的数组中

Javascript 获取项的索引并将索引放入不同的数组中,javascript,arrays,Javascript,Arrays,我特别想知道为什么这个解决方案不起作用 您应该创建一个函数,返回数组中所有项目的索引 给定数组['a','a','b','a','b','a'] 我想找到元素“a”的所有索引,并将其放入另一个数组中 我知道有不同的方法可以做到这一点,但我做到了 function getIndices(arr, el) { a = []; for(i of arr){ if(i === el) a.push(Number(arr.indexOf(i))); } re

我特别想知道为什么这个解决方案不起作用

您应该创建一个函数,返回数组中所有项目的索引

给定数组['a','a','b','a','b','a']

我想找到元素“a”的所有索引,并将其放入另一个数组中

我知道有不同的方法可以做到这一点,但我做到了

function getIndices(arr, el) {
    a = [];
    for(i of arr){
        if(i === el) a.push(Number(arr.indexOf(i)));
    }
    return a;
}
但当我运行它时,返回的结果都是[0,0,0,0] 为什么会这样?

请使用以下方法代替此方法:

for(var i=0;i<arr.length;i++) {
    if (arr[i] === el) {
        a.push(i);
    }
}

for(var i=0;iAs@reikyushin和@Barmer在注释中提到,
indexOf
返回第一个元素的索引

更好的解决方案是尝试以下方法:


函数indexOfElement(值、索引、数组){
if(值===this.searchElement)
收益指数;
}
常量输入数组=[1,4,7,22,2,7,7,3];
常数索引=输入阵列
.map(indexOfElement,{searchElement:7})
.filter((e)=>e!==未定义)
试试这个:

arr = ['a', 'a', 'b', 'a', 'b', 'a']
el = 'a'
a = []

arr.forEach(function (value,i){
  if (value === el) a.push(i);
});

使用
indexOf
第二个参数
fromIndex
。 这是修改后的代码

函数获取索引(arr、el){
a=[];
设last=-1;
第(一)部分{
如果(i==el)a.push(Number(last=arr.indexOf(i,last+1));
}
返回a;
}
常数数据=[“a”、“a”、“b”、“a”、“b”、“a”];

console.log(getIndexes(data,“a”);
indexOf()
总是返回第一个匹配项的索引。我不认为您可以使用indexOf。在这种情况下,@Barmar正确地认为indexOf返回数组项的第一个出现。也许您应该使用
(设i=0;i@reikyoushin他们写道,他们知道还有其他方法。是的,这就是为什么我要指出,在这里使用indexOf可能无法得到想要的解决方案。他们已经知道了,这就是为什么他们发布了这个问题。