[英]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.