繁体   English   中英

如何获取数组中重复元素的索引?

[英]How to get indexes of repetitive elements in array?

因此,例如,我需要找到arr newArr中每个可迭代elementcount ,该元素对前一个元素是重复的。

现在我创建函数,从doubled filter我的唯一elements ,但我还需要捕获这些elements的每个index ,这是重复的...现在我只得到last index一个重复elementlast index

 var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"]; function calc(newArr) { var obj = {}; newArr.map((newAr, index) => { obj[newAr] = index; // only last index for each repetetive elem // for "abc" it must be an array of [0,1,2] }); return obj; }; console.log(calc(newArr)); 

使用数组初始化obj[newAr] ,然后推送索引。

注意:使用Array.forEach()而不是Array.map() ,因为forEach用于副作用。

 var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"]; function calc(newArr) { var obj = {}; newArr.forEach((newAr, index) => { // init with array if the key is falsy (undefined in this case) obj[newAr] = obj[newAr] || []; // push the current index into the array obj[newAr].push(index); }); return obj; }; console.log(calc(newArr)); 

试试以下

 var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"]; function calc(newArr) { var obj = {}; newArr.map((newAr, index) => { obj[newAr] = obj[newAr] || []; obj[newAr].push(index); }); return obj; }; console.log(calc(newArr)); 

您可以传播收集的索引或采用空数组进行传播( 扩展语法... )并获取indices对象的实际元素。

顺便说一句,在块语句或函数体之后,你不需要分号,而不是Array#map take Array#forEach ,因为你需要迭代这些项,但你不使用返回的map数组。

 function calc(array) { var indices = {}; array.forEach((v, i) => indices[v] = [...indices[v] || [], i]); return indices; } var newArr = ["abc", "abc", "abc", "d", "et", "d", "et", "zzz"]; console.log(calc(newArr)); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM