JavaScript 实现数组去重的方法有多种,以下是其中几种常见的方法:
利用 Set 数据结构去重:
Set 是一个可扩展的有序数据结构,可以方便地对集合进行去重。使用 Set 去重的方法是将数组转换为 Set,然后再将 Set 转换回数组。
const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
利用 Array.filter() 方法去重:
Array.filter() 方法可以根据指定的条件过滤数组中的元素,并返回符合条件的元素。使用 filter() 方法去重的方法是将数组转换为 Array,然后使用 filter() 方法过滤数组中的元素,最后将过滤后的结果转换回数组。
const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];
const uniqueArr = arr.filter((item) => item);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
利用 Array.indexOf() 方法去重:
Array.indexOf() 方法可以返回指定元素在数组中的索引位置,如果该元素不存在,则返回 -1。使用 indexOf() 方法去重的方法是先将数组转换为 Array,然后使用 indexOf() 方法查找数组中是否包含指定元素,最后返回指定元素的索引位置。
const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];
const uniqueArr = arr.indexOf(2);
console.log(uniqueArr); // 2
利用 Array.reduce() 方法去重:
Array.reduce() 方法可以遍历数组,对数组中的每个元素执行一定的操作。使用 reduce() 方法去重的方法是将数组转换为 Array,然后使用 reduce() 方法遍历数组,对数组中的每个元素执行一定的操作,最后返回操作后的结果。
const arr = [1, 2, 3, 4, 3, 2, 1, 2, 5, 4, 6];
const uniqueArr = arr.reduce((accumulator, currentValue) => {
if (accumulator.includes(currentValue)) {
accumulator.push(currentValue);
} else {
accumulator.push([currentValue]);
}
return accumulator;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
使用 HashMap(对象)去重
const arr = [1, 2, 2, 3, 3, 4, 5];
const obj = {};
const uniqArr = arr.filter((item) => {
return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true);
});
console.log(uniqArr); // [1, 2, 3, 4, 5]
使用 includes 方法
const arr = [1, 2, 2, 3, 3, 4, 5];
const uniqArr = [];
for (let i = 0; i < arr.length; i++) {
if (!uniqArr.includes(arr[i])) {
uniqArr.push(arr[i]);
}
}
console.log(uniqArr); // [1, 2, 3, 4, 5]
使用 forEach 方法
const arr = [1, 2, 2, 3, 3, 4, 5];
const uniqArr = [];
arr.forEach((item) => {
if (!uniqArr.includes(item)) {
uniqArr.push(item);
}
});
console.log(uniqArr); // [1, 2, 3, 4, 5]
使用 ES6 中的 Map
const arr = [1, 2, 2, 3, 3, 4, 5];
const uniqArr = [];
const map = new Map();
for (let i = 0; i < arr.length; i++) {
if (!map.has(arr[i])) {
map.set(arr[i], true);
uniqArr.push(arr[i]);
}
}
console.log(uniqArr); // [1, 2, 3, 4, 5]
sort 方法实现数组去重
function unique(arr) {
arr.sort();
let len = arr.length;
let result = [arr[0]];
for (let i = 0; i < len; i++) {
if (arr[i] !== arr[i-1]) {
result.push(arr[i]);
}
}
return result;
}
以上是 JavaScript 实现数组去重的几种常见方法,可以根据具体情况选择适合的方法。