当前位置: 首页 > news >正文

JavaScript 中对数组进行去重

在 JavaScript 中,有多种方法可以对数组进行去重。以下是一些常用的方法,适用于不同场景和需求:

1. 使用 Set

Set 是一种集合数据结构,它只允许存储唯一的值。利用 Set 可以轻松实现数组去重:

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

2. 使用 filter

filter 方法可以用来过滤数组中的元素,结合 indexOf 可以实现去重:

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

3. 使用 reduce

reduce 方法可以用来累积数组中的元素,并在累积过程中实现去重:

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = array.reduce((acc, item) => {if (!acc.includes(item)) {acc.push(item);}return acc;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]

4. 使用 for 循环

传统的方法是使用 for 循环来实现去重:

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [];
for (let i = 0; i < array.length; i++) {if (!uniqueArray.includes(array[i])) {uniqueArray.push(array[i]);}
}
console.log(uniqueArray); // [1, 2, 3, 4, 5]

5. 使用 Map

如果需要保留对象的引用,或者处理复杂对象,可以使用 Map

const array = [1, 2, 2, 3, 4, 4, 5];
const uniqueArray = [...new Map(array.map(item => [item, item])).values()];
console.log(uniqueArray); // [1, 2, 3, 4, 5]

注意事项

  • 性能:对于大型数组,SetMap 的性能通常较好,因为它们的时间复杂度较低。
  • 对象去重:如果数组中包含对象,上述方法可能不适用,因为对象是引用类型。对于对象数组的去重,通常需要自定义比较逻辑。
  • 浏览器兼容性SetMap 在现代浏览器中支持良好,但在非常旧的浏览器中可能不支持。

选择合适的方法取决于你的具体需求和运行环境。

相关文章:

  • craw4ai 抓取实时信息,与 mt4外行行情结合实时交易,基本面来觉得趋势方向,搞一个外汇交易策略
  • 每日Prompt:心中的佛
  • js 手写promise
  • 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
  • Golang | 搜索哨兵-对接分布式gRPC服务
  • 【Prompt Engineering】摸索出的一些小套路
  • 【mysql】-5 索引
  • C++智能指针用法及内存管理
  • Jenkins+Docker 实现一键自动化部署项目
  • Laravel单元测试使用示例
  • Git 使用规范
  • 【 java 基础问题 第二篇 】
  • 学习threejs,超炫银河黑洞效果模拟
  • 初识Docker:容器化技术的入门指南
  • 180 度 = π 弧度
  • [网页五子棋][匹配模块]前后端交互接口(消息推送机制)、客户端开发(匹配页面、匹配功能)
  • Android学习之定时任务
  • 大数据-273 Spark MLib - 基础介绍 机器学习算法 决策树 分类原则 分类原理 基尼系数 熵
  • 深入解析Linux死锁:原理、原因及解决方案
  • 《ChatGPT o3抗命:AI失控警钟还是成长阵痛?》
  • 洛阳网站建设内容/网站运营是做什么的
  • 品牌网站建设多少钱/宁波网站推广公司有哪些
  • 苏州360推广网站建设/线上宣传渠道
  • 电影网站怎么做的/快速排名点击工具
  • 有实力的网站建设推广/百度如何免费打广告
  • 网站运营管理主要内容/网络运营怎么学