javascript - 如何使用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']
,但我得到了别的东西。请帮帮我。
解决方案
只需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
方法。combination
reduce
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);
推荐阅读
- python - 通过 terraform 更新 aws_lambda 函数而不删除以前的版本?
- wordpress - Woocommerce 产品显示过时的图像
- r - 如何将多个向量保存到列表中以在 R 中返回
- spring-boot - Spring数据:如何从多个Mongo集合中获取数据
- php - Netsuite API 抛出 400 错误请求
- r - 在 R 中合并多个 DF,寻找相似之处
- blazor - Blazorize 项目运行但忽略 NavMenu.razor
- python - python tkinter 标签++1
- android - 更新 Google 应用签名证书会破坏 Google Pay
- mysql - MySQL:总和(案例时(...))+ 分组。为什么即使使用 GROUP BY 也无法显示数据集的详细信息?