JavaScript小技巧:数组去重的几种优雅写法

简介: JavaScript小技巧:数组去重的几种优雅写法

JavaScript小技巧:数组去重的几种优雅写法

在日常开发中,数组去重是经常遇到的需求。除了传统的for循环加indexOf,ES6提供了更简洁的解法。

1. 最简洁:Set + 扩展运算符

const unique = arr => [...new Set(arr)];
// 示例:[1,2,2,3] => [1,2,3]

一行代码搞定,性能优异,适合多数场景。

2. 兼容对象:filter + findIndex

当数组包含对象时,Set无法直接去重(对象引用不同):

const uniqueObj = arr => 
  arr.filter((item, index, self) => 
    self.findIndex(t => t.id === item.id) === index
  );

id属性去重,灵活可控。

3. 性能优化:reduce + Map

对于大型数组,Map的查找效率更高:

const uniqueByMap = arr => 
  [...arr.reduce((map, item) => 
    map.set(item.id, item), new Map()).values()];

4. 实用技巧:过滤假值

const clean = arr => arr.filter(Boolean);
// [0, 1, false, 2, '', 3] => [1,2,3]

filter(Boolean)会移除所有假值(0, false, null, undefined, '')。

总结

  • 简单类型用Set
  • 对象数组根据业务选择合适的比较字段
  • 追求性能考虑Map

掌握这些技巧,代码质量立竿见影。

目录
相关文章
|
4月前
|
存储 机器学习/深度学习 编解码
阿里云服务器计算型c9i实例cpu型号、性能参数、收费标准与活动价格
阿里云服务器计算型c9i实例搭载全新CIPU架构与英特尔®至强®6处理器,算力稳定且安全加固,单核算力提升20%,支持AMX矩阵加速与TDX安全技术,适用于企业级应用、视频编解码等多场景。实例采用1:2处理器与内存配比,支持高性能NVMe协议与ESSD云盘,网络带宽强大,支持IPv4/IPv6及ERI技术。提供按量付费、包年包月等多种计费模式,当前活动价格低至6.4折,结合优惠券可进一步降低成本,适合承载高性能计算与关键业务。
|
4月前
|
存储 监控 安全
Java ZGC:亚毫秒级停顿的低延迟GC 革命性底层设计
ZGC是Java里程碑式低延迟GC:通过有色指针与读屏障,实现亚毫秒级STW停顿(<1ms),且停顿时间不随堆大小(8MB–16TB)或存活对象增长。JDK21起为默认GC,兼顾高吞吐(损耗≤15%),彻底解决传统GC停顿劣化难题。
683 6
|
4月前
|
分布式计算 Kubernetes Spark
Spark / Flink 跑在 Kubernetes 上真的更香吗?聊聊那些没人提前告诉你的性能坑
Spark / Flink 跑在 Kubernetes 上真的更香吗?聊聊那些没人提前告诉你的性能坑
483 8
|
4月前
|
存储 弹性计算 关系型数据库
阿里云服务器4核16G可选实例规格、收费标准、适用场景及活动价格
阿里云4核16G云服务器提供多样化实例规格,满足不同场景需求。收费模式灵活,支持按量付费和包年包月,其中包年包月性价比最高。目前4核16G配置选择经济型e实例的活动价格为2174.57元起,通用算力型u2i实例1576.80元起,通用型g9i实例3944.23元起。
|
4月前
|
Arthas 监控 Java
代码急诊室:用Arthas给你的Java应用做“微创手术”
Arthas本质上是个**Java诊断工具**,它是阿里巴巴开源的一个“瑞士军刀”,能让你在不重启服务的情况下:查看调用链、动态修改运行中的代码、监控J内存、线程、GC情况、参数和返回值。
366 6
|
4月前
|
存储 人工智能 自然语言处理
MIT论文解读:LLM 会被自身历史回复拖累 ,上下文污染会导致多轮对话质量衰减
MIT 2026年重磅论文揭示:AI多轮对话中,保留自身历史回复反而导致“上下文污染”,引发幻觉累积与质量滑坡。实验证明,移除AI过往回复可缩减上下文达10倍,70%轮次质量不变。这挑战了行业默认设计,呼吁从“堆叠历史”转向“智能省略”。
862 2
MIT论文解读:LLM 会被自身历史回复拖累 ,上下文污染会导致多轮对话质量衰减
|
4月前
|
人工智能 Rust JavaScript
1分钟吃上AI🦞小龙虾!阿里云/本地部署OpenClaw,配置免费api+集成5大热门Skills实战指南
OpenClaw的进化从未停止。当多数用户还在依赖基础对话功能时,ClawHub技能市场已诞生出一批颠覆性技能——能像人一样操作网页的Agent Browser、手机上就能合代码的GitHub技能、无需吩咐主动行动的Proactive Agent,甚至还有AI自己编写的热门技能。截至2026年3月,ClawHub前10名技能下载量均突破47万次,其中6-10名的5个技能,更是给OpenClaw装上了“眼睛(浏览器)、手脚(工具操控)和主见(主动行动)”,彻底打破“AI只能被动响应”的局限。
849 1
|
4月前
|
缓存 编译器 程序员
C语言深度解析:restrict关键字——编译器性能优化的终极钥匙
C99的`restrict`关键字是C语言性能优化的“终极钥匙”:它向编译器承诺指针独占访问内存,彻底解决同类型指针别名问题,解锁循环向量化、寄存器缓存等激进优化。滥用致未定义行为,善用则性能飙升数倍——这才是真正高阶C程序员的必修课。(239字)
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
从 0 到 1 写一个神经网络训练循环:别再只会 `model.fit()` 了
从 0 到 1 写一个神经网络训练循环:别再只会 `model.fit()` 了
455 7
|
4月前
|
人工智能 JavaScript Linux
Token立省47%+原生电脑操控:GPT-5.4+OpenClaw(阿里云/Win11/Mac/Linux)部署流程+避坑手册
2026年3月,OpenAI重磅发布GPT-5.4,不仅带来原生电脑操控、100万Token上下文等颠覆性升级,更凭借Tool Search功能为OpenClaw用户节省47% Token消耗,价格仅为Claude Opus的一半,成为OpenClaw生态的性价比新标杆。Every.to团队实测后,连Claude死忠粉都转向GPT-5.4,印证了其在OpenClaw中的适配优势。
1452 6