首页 > 解决方案 > 如何使用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'],但我得到了别的东西。请帮帮我。

标签: javascriptarrays

解决方案


只需filter通过将callback提供的函数作为参数传递来使用方法。

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);

另一种方法是使用with中的filter方法。combinationreduce

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);


推荐阅读