js数组去重-爱代码爱编程
JavaScript 对数组进行去重的方法有多种,以下是其中的几种常见方法:
- 使用 Set
Set 是 ES6 中新加入的一种数据结构,它类似于数组,但是成员的值都是唯一的。因此可以通过将数组转换为 Set 并再次转换为数组的方式实现去重。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = Array.from(new Set(arr));
console.log(uniqueArr); // [1, 2, 3, 4]
- 使用 filter() 方法
可以使用 filter() 方法遍历数组并返回一个新数组,该新数组中包含不重复的元素。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = arr.filter(function(item, index, array) {
return array.indexOf(item) === index;
});
console.log(uniqueArr); // [1, 2, 3, 4]
- 使用 reduce() 方法
reduce() 方法也可以遍历数组并返回一个新数组,在累加的过程中同时去重。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = arr.reduce(function(result, item) {
if (result.indexOf(item) === -1) {
result.push(item);
}
return result;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4]
- 使用 for 循环和 indexOf 方法
使用 for 循环遍历数组,并使用 indexOf 方法查找该元素在数组中是否存在,若不存在则添加到新数组中。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = [];
for (let i = 0; i < arr.length; i++) {
if (uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4]
- 使用 forEach 方法和 includes 方法
使用 forEach 方法遍历数组,使用 includes 方法查找该元素在数组中是否存在,若不存在则添加到新数组中。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = [];
arr.forEach(function(item) {
if (!uniqueArr.includes(item)) {
uniqueArr.push(item);
}
});
console.log(uniqueArr); // [1, 2, 3, 4]
- 使用 Map 数据结构
使用 Map 数据结构可以将元素作为 key 存储,因为 Map 中的 key 具有唯一性,可以用来实现数组的去重。
示例代码:
let arr = [1, 2, 2, 3, 3, 4];
let uniqueArr = Array.from(new Map(arr.map(function(item) {
return [item, item];
}))).map(function(item) {
return item[0];
});
console.log(uniqueArr); // [1, 2, 3, 4]
无论使用哪种方法,都可以对数组进行去重。其中,使用 Set 是最简单、最直接的方法。如果需要兼容老版本的浏览器,可以选择使用 filter() 或 reduce() 方法。