我有重复的数据到数组中,我试图使用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
如何从原始数组中获得每个元素的正确索引。
您可以通过跟踪前一个元素的位置来做到这一点。使用该值,您可以在查找下一个索引时跳过这些元素。
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);
}
});