簡體   English   中英

如何使用javascript刪除數組中甚至沒有重復出現的元素?

[英]How can I remove elements with even no of re-occurrence in an array with javascript?

var ar = ['a','a','a','b','e','e']
var charMap ={}
for(let char of ar){
    charMap[char] = charMap[char] +1 || 1
}
const result = [];
for(let ch in charMap){
    if(charMap[ch] %2 !== 0 ){
        result.push(Object.keys(ch))
    }
}
console.log(result);

結果應該像['a','a','a','b'] ,但我得到了別的東西。 請幫幫我。

只需通過傳遞callback提供的函數作為參數來使用filter方法。

 var ar = ['a','a','a','b','e','e'] ar = ar.filter(function(item){ return ar.filter(elem => elem == item).length %2 == 1; }); console.log(ar);

另一種方法是將filter方法與reduce combination使用。

 var ar = ['a','a','a','b','e','e'] ar = ar.filter(function(item){ return ar.reduce((pre, current) => (current == item) ? ++pre : pre, 0) % 2 == 1; }); console.log(ar);

您可以使用Map並提前計算值。 然后通過檢查計數來過濾數組。

 var array = ['a', 'a', 'a', 'b', 'e', 'e'], result = array.filter( Map.prototype.get, array.reduce((m, v) => m.set(v, (m.get(v) || 2) - 1), new Map) ); console.log(result);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM