JavaScript 中有多种方法可以去除数组中的重复元素,常用的方法包括以下几种:
-
filter() + indexOf()
利用数组的 filter() 方法和 indexOf() 方法,遍历数组并查找重复元素,将未出现过的元素添加到新数组中。示例代码如下:
function unique1(arr) {
return arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
}
-
filter() + Set()
利用 ES6 新增的 Set 数据结构,Set 对象成员的值都是唯一的,所以可以先将数组转换成 Set 对象,再将 Set 对象转换成数组。示例代码如下:
function unique2(arr) {
return Array.from(new Set(arr));
}
或者使用扩展运算符:
function unique2(arr) {
return [...new Set(arr)];
}
- reduce() + includes()
利用数组的 reduce() 方法和 includes() 方法,从左到右依次遍历数组并查找重复元素,将未出现过的元素添加到新数组中。示例代码如下:
function unique3(arr) {
return arr.reduce((prev, item) => {
return prev.includes(item) ? prev : [...prev, item];
}, []);
}
- map() + Object.create()
将数组转换为对象,利用对象成员的唯一性来去重。示例代码如下:
function unique4(arr) {
const map = Object.create(null);
return arr.filter((item) => {
return map[item] ? false : (map[item] = true);
});
}
需要注意的是,以上方法可能会存在一些局限性,比如对于多维数组或对象数组中的去重,需要根据具体情况选择合适的方法。