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