javascript - 如何删除数组中的所有重复元素(包括第一次出现)
问题描述
我在 CodeWars 中学习 JS,但没有找到删除数组中所有重复元素的方法。我需要这样做:
a = [1,2,2,2,3,4,5,6,6,7] b = [1,2,7,8,9]
返回一个唯一数组 = [3,4,5,8,9] 删除所有重复项,包括第一次出现
我怎样才能做到这一点?我已经使用了 for, if, forEach,但没有成功。
解决方案
你可以简单地
- 计算每个元素的出现次数(为了保留原始元素类型,您可以与合并数组
Array.prototype.reduce()
一起应用)Map
- 然后,过滤掉那些被多次看到的:
const a = [1,2,2,2,3,4,5,6,6,7],
b = [1,2,7,8,9],
uniques = [
...[...a, ...b]
.reduce((acc,item) =>
(acc.set(item, (acc.get(item)||0)+1), acc), new Map)
.entries()
].reduce((acc, [key, value]) =>
(value === 1 && acc.push(key), acc), [])
console.log(uniques)
.as-console-wrapper {min-height:100%}
推荐阅读
- c# - 使用 C# Azure Datalake Gen1 客户端的间歇性错误“底层连接已关闭”
- opencv - 在 Linux 上将 OpenCL 与英特尔超高清显卡一起使用
- javascript - Firebase 实时数据库 - 订阅 .on() 不会在客户端触发
- django - 在将 python2 项目移植到 python3 时,mobileesp 的中间件出现错误
- jmeter - 内部服务器错误 - http://localhost:1080/webTours/home.html
- java-9 - jdk9 maven编译错误:模块从A和B读取包
- sql - SQL 查询根据该范围的行之前和之后的记录转换记录集或范围
- amazon-web-services - 验证错误:存在无法识别的标头名称。检查文档以获取允许的标头名称
- javascript - 如何让 Dotenv 和 Nock 协同工作?
- python - 有比 pandas fillna() 更快的方法吗?