推荐使用[...new Set(arr)]去重,简洁高效,适用于字符串、数字等基本类型;含对象需用filter+indexOf或reduce+includes;大数据量推荐Set辅助的filter方案。

JavaScript 数组去重有多种方式,高效与否取决于数据规模、元素类型(是否含对象)、是否需保持顺序,以及浏览器兼容性要求。现代写法简洁且性能好,老环境则需兼顾兼容性。
Set 自动过滤重复值,配合扩展运算符或 Array.from 转回数组,代码最简、性能优秀,适用于字符串、数字等基本类型:
注意:Set 对象元素视为不同({a:1} 和 {a:1} 不去重),不适用于含对象的数组。
利用 indexOf 返回首次出现索引,只保留“第一次出现的位置”,天然保序,兼容 IE9+:
立即学习“Java免费学习笔记(深入)”;
缺点是时间复杂度 O(n²),大数据量时略慢;但逻辑清晰,适合中小数组或需兼容旧环境的场景。
用 reduce 累积结果数组,每次检查新元素是否已存在,可读性强,支持 IE11+:
注意:对大数组,includes 查找也是 O(n),整体仍是 O(n²);若追求性能,可改用 Set 辅助判断(见下条)。
当数组很长(如上万项),需避免嵌套循环时,可用 Set 记录已见元素,单次遍历完成:
这本质是“空间换时间”,时间复杂度降为 O(n),适合处理大量基础类型数据。
基本上就这些。日常开发优先用 [...new Set(arr)];要兼容老浏览器或需定制逻辑(比如按对象某个字段去重),再选 filter 或 reduce 配合判断。去重本身不复杂,但选错方法容易在大数据下拖慢页面。
以上就是javascript如何数组去重_有哪些高效方式的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号