在程序开发中,经常会遇到需要对一个数组进行去重的情况。既然要去重,那么就意味着要将数组中的重复元素删除,解决这个问题的核心问题就是如何判断两个元素是否相同。
下面介绍几种常见的数组去重方法:
利用ES6中新增的数据结构Set,可以方便地实现数组去重。
const arr = [1, 2, 3, 2, 1];
const newArr = [...new Set(arr)];
console.log(newArr); // [1, 2, 3]
上述代码中,创建了一个包含重复元素的数组arr,通过扩展运算符(...)和Set数据结构,得到了一个新的数组newArr,其中所有重复元素都被去除了。
如果要对一个对象数组或字符串数组进行去重,可以使用Map来实现。
function unique(arr) {
const map = new Map();
return arr.filter(item => !map.has(item) && map.set(item, true));
}
const arr1 = [{name: '张三', age: 20}, {name: '李四', age: 25}, {name: '张三', age: 20}];
const arr2 = ['apple', 'banana', 'orange', 'banana'];
console.log(unique(arr1)); // [{name: '张三', age: 20}, {name: '李四', age: 25}]
console.log(unique(arr2)); // ['apple', 'banana', 'orange']
上述代码中,定义了一个名为unique的函数,该函数接收一个数组作为参数,使用Map数据结构实现去重,并返回一个新的数组。当Map对象中不存在当前元素时,就把该元素添加到Map中,并返回true,否则返回false。
如果要对一个数字或字符串数组进行去重,可以使用indexOf方法来实现。
function unique(arr) {
const newArr = [];
arr.forEach(item => {
if (newArr.indexOf(item) === -1) {
newArr.push(item);
}
});
return newArr;
}
const arr1 = [1, 2, 3, 2, 1];
const arr2 = ['apple', 'banana', 'orange', 'banana'];
console.log(unique(arr1)); // [1, 2, 3]
console.log(unique(arr2)); // ['apple', 'banana', 'orange']
上述代码中,定义了一个名为unique的函数,该函数接收一个数组作为参数,使用indexOf方法实现去重,并返回一个新的数组。当新数组中不存在当前元素时,就把该元素添加到新数组中。
以上三种方法均可用于对数组进行去重。在实际开发中,根据具体情况选择合适的方法即可。
本文链接:http://task.lmcjl.com/news/2707.html