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