几种常见的数组去重方式

数组去重的几种常见方式

Set
Set 是 ES2015 新增的一种数据结构,类似数组,Set 中的元素只会出现一次,即 Set 中的元素是唯一的。
const a = [1, 2, 3, 4, 5, 5, 5];
const b = Array.from(new Set(a)) 或者const b= [… new Set(a)]
console.log(b); // [1, 2, 3, 4, 5]

双层 for 循环进行去重
function unique(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
j–;
}
}
}
return arr;
}

const a = [1, 1, 2, 3, 2, 3, 4, 5, 5, 5, 6];
const b = unique(a);
console.log(b); // [ 1, 2, 3, 4, 5, 6 ]

indexOf() 或 includes()
创建一个新数组,利用 indexOf() 或 includes() 判断新数组是否包含已存在的元素,如果没有则添加到新数组。
function unique(source) {
let target = [];
source.forEach(item => {
if (target.indexOf(item) < 0) {
target.push(item);
}
});
return target;
}
const a = [1, 2, 3, 3, 4, 4, 5, 5, 5, 6];
const b = unique(a);
console.log(b); // [ 1, 2, 3, 4, 5 ]

filter
利用 filter 返回元素在数组中首次出现的索引值和该元素的索引一样的元素的新数组,即重复出现的元素会被过滤掉。
function unique(arr) {
return arr.filter((item, index, arr) => arr.indexOf(item, 0) === index);
}
const a = [1, 1, 2, 2, 3, 2, 3, 4, 5, 5, 5];
const b = unique(a);
console.log(b); // [ 1, 2, 3, 4, 5 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值