数组去重的方法--常见

1 ) Array.from + Set 去重

function unique(arr) {
    return Array.from(new Set(arr));
}

const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]

2. Set + rest参数 去重

function unique(arr) {
    return [...new Set(arr)];
}

const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]

3.传统去重: 循环 + indexOf

function unique(arr) {
   const res = [];
   arr.forEach(item => {
       if (res.indexOf(item) < 0) res.push(item);
   })
  return res;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]

4. 传统去重: 循环 + indexOf + lastIndexOf

function unique(arr) {
   const res = [];
   arr.forEach(item => {
       if (res.indexOf(item) < 0) res.push(item);
   })
  return res;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]

5.map 去重

function unique(arr) {
    const map = new Map();
    const tmp = [];
    arr.forEach(item => {
    	// 判断是否存在该key值, 当前值作为map的key值
    	if (!map.has(item)) {  
            map.set(item, 1); // 1 或 true
            tmp.push(item);
        }
    });
    return tmp;
}
const res = unique([30, 10, 20, 30, 40, 10])
console.log(res) // [30, 10, 20, 40]

简单记录一下 去重的几种干事

转载前端小技巧: 数组去重的15种方法_前端数组对象去重的方法-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值