【javaScript】数组去重

数组去重

相关文章

数组去重


一、使用Set对象

Set对象是ES6中的数据结构,它可以存储唯一的值,因此可以利用Set对象来实现数组去重。

1
2
3
const array = [1, 2, 2, 3, 3, 4, 5];
const uniqueArray = [...new Set(array)];
console.log(uniqueArray); // [1, 2, 3, 4, 5]

二、使用filter方法

遍历数组,使用filter方法过滤出只包含唯一值的新数组。

1
2
3
const array = [1, 2, 2, 3, 3, 4, 5];
const uniqueArray = array.filter((value, index, self) => self.indexOf(value) === index);
console.log(uniqueArray); // [1, 2, 3, 4, 5]

self.indexOf(value) === index 表示当前元素在数组中的第一次出现的位置等于当前遍历的索引 index。

三、使用reduce方法

使用reduce方法遍历数组,构建一个新数组,只包含未出现过的元素。

1
2
3
4
5
6
7
8
const array = [1, 2, 2, 3, 3, 4, 5];
const uniqueArray = array.reduce((accumulator, currentValue) => {
if (!accumulator.includes(currentValue)) {
accumulator.push(currentValue);
}
return accumulator;
}, []);
console.log(uniqueArray); // [1, 2, 3, 4, 5]

四、使用indexOf或includes方法和循环

遍历数组,使用indexOf或includes方法判断当前元素是否在新数组中,若不在则添加到新数组中。

1
2
3
4
5
6
7
8
const array = [1, 2, 2, 3, 3, 4, 5];
const uniqueArray = [];
for (let i = 0; i < array.length; i++) {
if (uniqueArray.indexOf(array[i]) === -1) {
uniqueArray.push(array[i]);
}
}
console.log(uniqueArray); // [1, 2, 3, 4, 5]

五、使用对象属性

遍历数组,将数组元素作为对象的属性,利用对象属性的唯一性实现去重。

1
2
3
4
5
const array = [1, 2, 2, 3, 3, 4, 5];
const obj = {};
array.forEach(item => obj[item] = item);
const uniqueArray = Object.values(obj);
console.log(uniqueArray); // [1, 2, 3, 4, 5]

喜欢这篇文章?打赏一下支持一下作者吧!
【javaScript】数组去重
https://www.cccccl.com/20210505/javascript/数组去重/
作者
Jeffrey
发布于
2021年5月5日
许可协议