新闻中心

j*ascript_如何实现数组去重

2025-12-04
浏览次数:
返回列表
使用Set去重是J*aScript中最高效的方法,适用于基本数据类型;对于对象数组则可通过filter配合findIndex按属性去重。

javascript_如何实现数组去重

J*aScript 实现数组去重有多种方法,根据数据类型和性能需求可以选择不同的方式。以下是几种常用且实用的方法。

1. 使用 Set 去重(推荐)

ES6 提供了 Set 数据结构,它只存储唯一值,结合扩展运算符可以快速去重,适用于基本数据类型(如字符串、数字)。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]

这种方法简洁高效,是目前最常用的去重方式。

2. 使用 filter + indexOf

通过遍历数组,利用 indexOf 返回第一个匹配项的索引,判断当前项是否为首次出现。

const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

兼容性好,适合不支持 Set 的旧环境,但对大数据量性能较差。

3. 使用 reduce 构建唯一数组

利用 reduce 累积一个不含重复值的新数组。

先锋多用户商城系统 先锋多用户商城系统

修改自网上仿乐购商城,新增功能:1、数据库在线备份与导入功能,可以随时备份数据库,数据受损可以导入数据库,确保数据安全;2、增加组合商品概念,可以用于组配商品销售(比如外套有蓝色和红色,鞋子有40码和41码等),买一送一、组合销售(比如上衣+围巾+长裙做为一个套装商品)和加价购买等销售方式;3、按照商品重量和送货距离实时计算精确运费,并可在订单中予以显示,使运费金额实现实时动态准确显示、清晰明了;

先锋多用户商城系统 0 查看详情 先锋多用户商城系统 const arr = [1, 2, 2, 3, 4, 4, 5];
const uniqueArr = arr.reduce((acc, curr) => {
  if (!acc.includes(curr)) {
    acc.push(curr);
  }
  return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

逻辑清晰,适合需要在累积过程中处理其他逻辑的场景。

4. 对象数组去重(按某个属性)

如果数组元素是对象,不能直接用 Set 或 indexOf。可以通过属性值来去重,例如使用 filter 配合 findIndex

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 1, name: 'Alice' }
];

const uniqueUsers = users.filter((user, index, self) =>
  self.findIndex(u => u.id === user.id) === index
);
console.log(uniqueUsers);

这样可以根据指定字段(如 id)确保对象唯一。

基本上就这些常见方法。简单去重首选 Set,复杂条件可选 filter 或 reduce。根据实际数据结构选择合适方案即可。

以上就是j*ascript_如何实现数组去重的详细内容,更多请关注其它相关文章!


# 文件上传  # seo矩阵好使吗  # 湘潭网站建设优化企业  # 酒泉网站推广费用  # 海宁推广网站如何制作  # seo全景高清壁纸  # 上海网站关键词优化排名  # 绥化seo公司技巧  # 江西公司推广网站  # seo激励  # 巴南知名的seo口碑  # 第一个  # 加载  # javascript  # 键值  # 如何使用  # 运算符  # 适用于  # 多用户  # 如何实现  # 数据结构  # red  # 大数据  # java  # es6 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 如何在Promise链中优雅地中断后续then执行  QQ邮箱官方邮箱登录入口 QQ邮箱网页版快速访问  Golang如何使用context实现超时取消_Golang context超时取消模式实践  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  J*a递归快速排序中静态变量导致数据累积问题的解决方案  CSS图片焦点样式实现教程:理解与应用tabindex属性  Python实时数据流中的动态最值查找策略  美团外卖商家服务中心入口 美团商家版官网入口  AO3同人作品网入口 AO3搜索引擎官网永久地址  将JSON对象数组转置为键值对列表的实用指南  天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】  css卡片内容溢出如何处理_使用overflow隐藏或scroll显示内容  Python多线程中正确使用sigwait处理SIGALRM信号  Node.js 中使用 node-cron 实现定时 API 数据抓取与处理  必由学网页版入口 必由学官方平台直接访问  多闪网页版在线观看免费入口_多闪官网访问入口  Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突  打开就能玩的植物大战僵尸 植物大战僵尸网页版传送门  AO3网页版最新入口合集 Archive of Our Own在线访问指南  深入理解Promise链:如何在catch后中断then的执行  J*aScriptWebpack优化_J*aScript构建工具实战  word中如何让数字纵向排列_Word数字纵向排列方法  Golang如何实现Web文件静态资源服务器_Golang静态资源服务器开发与实践  解决J*aScript中重复选择项的确认对话框显示问题  Lar*el Excel导入时生成自定义递增ID的策略与实践  PySpark中高效提取字符串右侧可变长度数字:使用regexp_extract  知音漫客正版漫画平台_知音漫客官网账号登录  夸克浏览器图书入口 夸克手机浏览器阅读入口  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  文心一言怎样用插件调度API数据_文心一言用插件调度API数据【API调用】  微信网页版官方快速登录入口 微信网页版网页版账号直达  Excel中VLOOKUP的第四个参数是干什么用的_Excel VLOOKUP第四参数作用解析  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  Python自定义类排序:解决lambda键值访问TypeError的实践指南  Linux如何排查内存不足OOME问题_LinuxOOM分析教程  免费抖音短视频入口_抖音网页版短视频免费通道  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  如何设置Windows Defender的定时扫描_计划任务实现自动杀毒【安全】  如何在更新Composer依赖后自动运行测试_使用post-update-cmd钩子触发PHPUnit  腾讯QQ邮箱登录入口_QQ邮箱官方网站使用地址  Django模型中自动计算可用余额的实现方法  Mac怎么锁定备忘录_Mac备忘录加密设置教程  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  抖音DOU+怎么投最有效 抖音付费推广的ROI提升技巧  CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示  机器学习中对数变换预测结果的反向还原  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  黑鲨3Pro怎样在相册开漫画风滤镜_iPhone黑鲨3Pro相册开漫画风滤镜【趣味滤镜】  铁路12306官网网页端快速入口 铁路12306官方首页登录教程 

搜索