JS中数组去重的几种方法

简介: JS中数组去重的几种方法

在JavaScript中,有多种方法可以实现数组去重。以下是一些常见的方法:

1,使用ES6的Set数据结构

Set数据结构只允许存储唯一的值(无论是原始值或者是对象引用),因此是数组去重的理想选择。

let arr = [1, 2, 2, 3, 4, 4, 5, 5, 6];  
let uniqueArr = [...new Set(arr)];  
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5, 6]
2,使用filter方法

通过遍历原数组,检查当前元素是否在新数组中已存在,如果不存在则添加到新数组中。

let arr = [1, 2, 2, 3, 4, 4, 5, 5, 6];  
let uniqueArr = arr.filter((value, index, self) => {  
    return self.indexOf(value) === index;  
});  
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5, 6]
3,使用reduce方法

reduce方法也可以实现数组去重,其思路与filter类似,但reduce方法会返回一个新数组。

let arr = [1, 2, 2, 3, 4, 4, 5, 5, 6];  
let uniqueArr = arr.reduce((accumulator, current) => {  
    if (!accumulator.includes(current)) {  
        accumulator.push(current);  
    }  
    return accumulator;  
}, []);  
console.log(uniqueArr); // 输出: [1, 2, 3, 4, 5, 6]

注意:对于包含引用类型(如对象或数组)的数组,上述方法可能无法正确去重,因为即使两个对象的内容相同,它们在内存中的地址也不同,因此会被视为不同的元素。如果你需要对包含引用类型的数组进行去重,你可能需要定义一个比较函数来检查对象的内容是否相同。

相关文章
|
10天前
|
JavaScript API
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
js【最佳实践】遍历数组的八种方法(含数组遍历 API 的对比)for,forEach,for of,map,filter,reduce,every,some
21 1
|
14天前
|
JavaScript
js【详解】call()、apply()、bind()方法
js【详解】call()、apply()、bind()方法
24 6
|
11天前
|
JavaScript 前端开发
JavaScript中exec()方法详解
在这个示例中,exec()方法会找到两个匹配项,并打印出它们在字符串中的位置。
11 1
|
13天前
|
JavaScript 前端开发 容器
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
17 2
|
13天前
|
JavaScript
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
21 2
|
14天前
|
存储 JavaScript 前端开发
使用JavaScript的indexOf方法
使用JavaScript的indexOf方法
|
13天前
|
前端开发 JavaScript
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
8 1
|
13天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
16 1
|
11天前
|
JavaScript
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
JS数组操作---删除,arr.pop()方法从数组中删除最后一个元素,并返回该元素的值,arr.shift() 删除第一个值,arr.splice()方法,删除指定元素,arr.splice,从第一
|
11天前
|
JavaScript
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值
Js,定义数组的方法,let 数组名 = [数据1,数据2,........,数据n],取值方法,数组名[x],arr[0],let sum sum = sum + arr[0],求和的写法,平均值