提问者:小点点

如何在过滤器JavaScript中获取正确的索引[重复]


我有重复的数据到数组中,我试图使用indexOF获取每个元素的索引。但是,它总是给出第一条记录的索引

var data = ["a","b","c","d","a",'c',"a"];
var filterData = data.filter(i=>i == "a");
filterData.forEach(element=>{
    var index = data.indexOf(element);
  console.log(index);
});

//预期答案:0,4,6
https://stackblitz.com/edit/typescript-1ttn4m?file=index.ts

如何从原始数组中获得每个元素的正确索引。


共2个答案

匿名用户

您可以通过跟踪前一个元素的位置来做到这一点。使用该值,您可以在查找下一个索引时跳过这些元素。

var data = ["a","b","c","d","a",'c',"a"];
var filterData = data.filter(i => i == "a");
var previousIndex = -1;

filterData.forEach(element=>{
  var index = data.slice(++previousIndex).indexOf(element);
  console.log(index + previousIndex);
  previousIndex += index;
});

匿名用户

Array. for每上,默认格式为arr.for每(callback(当前值[,索引[,数组]])[,thisArg])

您可以在此链接上了解更多信息

var data = ["a","b","c","d","a",'c',"a"];

data.forEach((element, index) => {
  if (element === 'a') {
    console.log(index);
  }
});