Javascript开发必备:5种数组去重方法大揭秘
1. 使用 Set 数据结构 Set 是 ES6 中新增的数据结构,它可以存储任何类型的唯一值(注意:Set 中的值都是唯一的,没有重复的值)。 ```javascript let arr = [1, 2, 3, 2, 4, 3, 5]; let uniqueArr = [...new Set(arr)]; console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` 2. 使用 filter 方法 filter 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。 ```javascript let arr = [1, 2, 3, 2, 4, 3, 5]; let uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index); console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` 3. 使用 reduce 方法 reduce 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。 ```javascript let arr = [1, 2, 3, 2, 4, 3, 5]; let uniqueArr = arr.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []); console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` 4. 使用 indexOf 方法 利用数组的 indexOf 方法,如果数组中包含重复元素,则返回第一次出现的位置,否则返回 -1。 ```javascript let arr = [1, 2, 3, 2, 4, 3, 5]; let uniqueArr = arr.filter(item => arr.indexOf(item) === arr.lastIndexOf(item)); console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` 5. 使用双重循环 使用双重循环,外层循环遍历数组,内层循环遍历已去重的数组,如果有相同的元素,则删除。 ```javascript let arr = [1, 2, 3, 2, 4, 3, 5]; let uniqueArr = []; for(let i = 0; i < arr.length; i++) { let isExist = false; for(let j = 0; j < uniqueArr.length; j++) { if(uniqueArr[j] === arr[i]) { isExist = true; break; } } if(!isExist) { uniqueArr.push(arr[i]); } } console.log(uniqueArr); // [1, 2, 3, 4, 5] ``` ######[AI写代码神器 | 566点数解答 | 2023-11-09 01:46:54]
- Java 实现计算机硬件模拟:从 PCI 设备到主板、计算机的启动与关闭(字节豆包 | 716点数解答 | 2024-12-08 23:38:38)330
- Java 代码:模拟计算机主板启动与关闭 PCI 设备全流程(字节豆包 | 637点数解答 | 2024-12-09 08:31:54)300
- Java 实战:Vehicle 类与 User 类实现机动车速度功率控制( | 968点数解答 | 2024-03-12 11:26:25)549
- JavaScript:创建 Animal 类与 Dog 类,重写 speak 方法并实例调用(字节豆包 | 63点数解答 | 2024-10-29 08:20:51)198
- Java 实战:动物类、接口与继承实现鸟儿吃虫和飞翔功能(字节豆包 | 183点数解答 | 2024-09-19 15:53:55)291
- Java 实战:动物类、接口与继承,实现鸟儿吃虫与飞翔功能(字节豆包 | 184点数解答 | 2024-09-19 16:45:48)311
- Java 实现 BankAccount 类:账户余额管理与测试全解析(字节豆包 | 420点数解答 | 2024-10-11 08:48:21)319
- Java 编程:实现教师与学生类的创建、继承及属性操作(字节豆包 | 745点数解答 | 2024-10-16 18:40:42)398
- Java 实现 Circle 类:全面封装圆的属性与方法(字节豆包 | 256点数解答 | 2024-10-27 16:34:37)247
- Java 实现继承关系:Fu 类、Zi 类与测试类 Example04 代码解析及注意要点(字节豆包 | 251点数解答 | 2024-12-12 09:36:45)249
- Java实现银行账户类:含账户余额操作与测试代码(DeepSeek | 711点数解答 | 2025-03-23 21:38:57)260
- Java 实现银行账户类:含异常处理与日志输出的账户操作详解(字节豆包 | 484点数解答 | 2025-05-05 17:07:36)312