推荐使用[...new Set(arr)]去重,简洁高效,适用于字符串、数字等基本类型;含对象需用filter+indexOf或reduce+includes;大数据量推荐Set辅助的filter方案。
JavaScript 数组去重有多种方式,高效与否取决于数据规模、元素类型(是否含对象)、是否需保持顺序,以及浏览器兼容性要求。现代写法简洁且性能好,老环境则需兼顾兼容性。
Set 自动过滤重复值,配合扩展运算符或 Array.from 转回数组,代码最简、性能
优秀,适用于字符串、数字等基本类型:
注意:Set 对象元素视为不同({a:1} 和 {a:1} 不去重),不适用于含对象的数组。
利用 indexOf 返回首次出现索引,只保留“第一次出现的位置”,天然保序,兼容 IE9+:
缺点是时间复杂度 O(n²),大数据量时略慢;但逻辑清晰,适合中小数组或需兼容旧环境的场景。
用 reduce 累积结果数组,每次检查新元素是否已存在,可读性强,支持 IE11+:
注意:对大数组,includes 查找也是 O(n),整体仍是 O(n²);若追求性能,可改用 Set 辅助判断(见下条)。
当数组很长(如上万项),需避免嵌套循环时,可用 Set 记录已见元素,单次遍历完成:
这本质是“空间换时间”,时间复杂度降为 O(n),适合处理大量基础类型数据。
基本上就这些。日常开发优先用 [...new Set(arr)];要兼容老浏览器或需定制逻辑(比如按对象某个字段去重),再选 filter 或 reduce 配合判断。去重本身不复杂,但选错方法容易在大数据下拖慢页面。
# javascript
# java
# 大数据
# 浏览器
# red
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Win11截图快捷键是什么_Win11自带截图工具使用技巧【汇总】
如何在Windows上设置闹钟和计时器_系统自带的时钟应用全攻略【生活技巧】
Windows怎样关闭开始菜单广告_Windows关闭开始菜单广告设置【步骤】
LINUX如何开放防火墙端口_Linux firewalld与iptables开放端口命令【安全配置】
C++中的constexpr和const有什么区别?(编译期常量)
Win11怎么解压RAR文件 Win11自带解压功能使用方法
MAC如何快速搜索大文件_MAC磁盘空间分析与冗余数据清理【方法】
Windows10如何更改任务栏高度_Win10解除锁定调整大小
Python迭代器生成器进阶教程_节省内存与懒加载实战
mac怎么看硬盘大小_MAC查看磁盘存储空间与文件占用【详解】
php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】
c++怎么实现大文件的分块读写_c++ 文件指针seekp与seekg偏移控制【方法】
如何使用Golang实现容器自动化运维_Golang Docker运维管理方法
Win10怎么设置开机密码_Windows10账户登录密码设置与取消
Mac电脑如何恢复出厂设置_Mac抹掉数据并重装系统【安全指南】
Windows10电脑怎么设置文件权限_Win10安全选项卡所有者修改
VSC怎么配置PHP的Xdebug_远程调试设置步骤【详解】
phpstudy本地环境mysql忘记密码_重置mysqlroot密码操作流程【解答】
ACF 教程:如何正确更新嵌套在多层 Group 字段内的子字段
Win11声音太小怎么办_Windows 11开启响度均衡增强音量【技巧】
Win11如何隐藏桌面图标 Win11一键隐藏/显示桌面图标【指南】
Win10怎么卸载迅雷_Win10彻底卸载迅雷方法【步骤】
Win11快速助手怎么用_Win11远程协助连接教程【工具】
如何在 PHP 中按相同键合并两个关联数组为二维数组
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
Python高性能计算项目教程_NumPyCythonGPU并行加速
Win11此电脑不在桌面上_Windows 11桌面图标设置找回【步骤】
php嵌入式日志记录怎么实现_php将硬件数据写入本地日志文件【指南】
Mac的“预览”如何合并多个PDF_Mac文件处理技巧【效率】
如何在Golang中实现基础配置管理功能_Golang配置文件读取与更新示例
Python函数接口文档化_自动化说明【指导】
Win11麦克风没声音怎么设置_Win11麦克风权限及驱动修复【教程】
PHP 中 require() 语句返回值的用法详解
Win11怎么清理C盘OneDrive缓存_Win11清理OneDrive缓存技巧【方法】
Python与Docker容器化部署实战_镜像构建与CI/CD流程
如何关闭Win10自动更新更新_Win10系统自动更新双重关闭技巧
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
Windows Defender扫描失败怎么办_安全模块损坏修复方式
php增删改查在php8里有什么变化_新特性对curd的影响【指南】
如何使用Golang理解结构体指针方法接收者_Golang修改字段实践
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
PHP cURL GET请求:正确设置请求头与身份认证的完整教程
php怎么下载安装后测试是否成功_简单脚本验证方法【操作】
Go 语言标准库为何不提供泛型 Contains 方法:设计哲学与类型系统约束
Linux如何安装Golang环境_Linux下Go语言开发包配置【方法】
Win11怎么设置右键刷新选项_Windows11显示更多选项技巧
Windows10如何彻底关闭自动更新_Win10服务与组策略双重禁用
VSC怎样在VSC中调试PHPAPI_接口调试技巧【详解】
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Win10文件历史记录怎么用 Win10开启自动备份文件教程【防丢】
2025-12-19
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。