揭秘十余种JS数组去重方法,磨炼基础知识!
2023-12-27 21:33:45
前言
JavaScript数组去重,顾名思义,就是从一个数组中移除重复的元素,只保留唯一的元素。这在实际开发中非常常见,例如:从用户输入的数据中去除重复项、对数据进行分组、生成唯一的ID等等。在本文中,我们将逐一介绍十余种JS数组去重方法,从基础的数组方法到高级的库函数,循序渐进,深入浅出,让您全面掌握JS数组去重的奥秘。
基础数组方法
1. 使用Set对象
Set对象是ES6中新增的一种数据结构,它可以自动去除重复元素。我们可以将数组转换为Set对象,然后将其转换回数组,即可实现数组去重。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
2. 使用filter方法
filter方法可以根据提供的过滤函数对数组中的元素进行筛选,只保留满足条件的元素。我们可以使用filter方法来去除数组中的重复元素。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
3. 使用reduce方法
reduce方法可以将数组中的元素逐个累积起来,得到一个最终结果。我们可以使用reduce方法来去除数组中的重复元素。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = arr.reduce((acc, item) => {
if (!acc.includes(item)) {
acc.push(item);
}
return acc;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
循环方法
4. 使用for循环
for循环是一种最简单、最直观的循环方式。我们可以使用for循环来遍历数组,并使用indexOf方法或lastIndexOf方法来检查元素是否重复。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const 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, 5]
5. 使用while循环
while循环也是一种常用的循环方式。我们可以使用while循环来遍历数组,并使用includes方法或some方法来检查元素是否重复。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = [];
let i = 0;
while (i < arr.length) {
if (!uniqueArr.includes(arr[i])) {
uniqueArr.push(arr[i]);
}
i++;
}
console.log(uniqueArr); // [1, 2, 3, 4, 5]
6. 使用do-while循环
do-while循环是一种至少执行一次的循环方式。我们可以使用do-while循环来遍历数组,并使用every方法或findIndex方法来检查元素是否重复。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = [];
let i = 0;
do {
if (uniqueArr.every((item) => item !== arr[i])) {
uniqueArr.push(arr[i]);
}
i++;
} while (i < arr.length);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
高级库函数
7. 使用lodash库
lodash是一个功能强大的JavaScript库,提供了许多有用的函数。其中,_.uniq()函数可以轻松实现数组去重。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = _.uniq(arr);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
8. 使用underscore库
underscore是一个与lodash类似的JavaScript库,也提供了许多有用的函数。其中,_.uniq()函数可以轻松实现数组去重。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = _.uniq(arr);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
9. 使用immutable.js库
immutable.js是一个专注于不可变数据的JavaScript库。其中,Immutable.Set()函数可以轻松实现数组去重。
const arr = [1, 2, 3, 4, 5, 1, 2, 3];
const uniqueArr = Immutable.Set(arr).