[英]How to get indexes of repetitive elements in array?
因此,例如,我需要找到arr newArr
中每个可迭代element
的count
,该元素对前一个元素是重复的。
现在我创建函数,从doubled filter
我的唯一elements
,但我还需要捕获这些elements
的每个index
,这是重复的...现在我只得到last index
一个重复element
的last 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.