簡體   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