JavaScript中数组去重最简洁高效的方式是用Set,一行代码const uniqueArr = […new Set(arr)]即可实现;它对基本类型可靠,但引用类型按内存地址判断,不支持深去重。

JavaScript 中实现数组去重最简洁高效的方式是用 Set,它天然保证元素唯一性,一行代码就能搞定。
用 Set 快速去重(推荐)
Set 是 ES6 引入的内置对象,只存储唯一值。将数组转为 Set 后再转回数组,即可完成去重:
const uniqueArr = […new Set(arr)];
例如:
const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = […new Set(arr)]; // [1, 2, 3, 4, 5]
这个方法对基本类型(数字、字符串、布尔值)完全可靠;对对象或数组等引用类型,Set 按内存地址判断是否重复,所以不会自动“深去重”。
立即学习“Java免费学习笔记(深入)”;
Set 相比传统方法的优势
Set 不仅写法简洁,在性能和语义上也有明显优势:
时间复杂度低:插入和查找平均为 O(1),而用 filter + indexOf 或双层循环是 O(n²) 语义清晰:直接表达“我要一个无重复的集合”,代码意图一目了然 自动忽略 NaN:Set 认为多个 NaN 是相等的,只会保留一个(而 === 判断中 NaN !== NaN) 支持迭代协议:可直接用于 for...of、展开运算符、解构等现代语法
其他常见去重方式(了解适用场景)
虽然 Set 是首选,但某些场景仍需其他方法:
需要兼容老浏览器(如 IE):用 filter + indexOf 或 reduce 按对象某个属性去重:需配合 Map 或 findIndex 实现逻辑判断 深比较去重(如数组/对象内容相同即视为重复):需序列化(如 JSON.stringify)或手动遍历比对,Set 无法直接胜任
注意 Set 的限制
Set 虽好,但不是万能的:
不处理嵌套结构:两个内容相同的对象 {a:1} 和 {a:1} 在 Set 中是不同元素 不能直接去重对象数组:需先提取键值或转换为字符串标识 不保持原始顺序以外的逻辑:比如按出现频次排序、保留最后出现项等,需额外处理
不复杂但容易忽略:用 Set 去重时,记得用展开运算符或 Array.from() 转回数组,否则得到的是 Set 实例而非数组。
以上就是javascript中如何实现数组去重?_javascript的Set数据结构有什么优势?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1542912.html
微信扫一扫
支付宝扫一扫