es6实现数组去重

首先针对简单的数组 [1, 2, 3, 3, 4, 4, 5] 进行去重。

let testArr = [1, 2, 3, 3, 4, 4, 5]
let newArr = Array.from(new Set(testArr))
console.log(newArr)

控制台输出结果:

下面针对数组对象进行去重。

比如我这里有个数组:

    [
      {
        id: 1111,
        name: 'aaa'
      },
      {
        id: 2222,
        name: 'bbb'
      },
      {
        id: 1111,
        name: 'aaa'
      },
      {
        id: 3333,
        name: 'ccc'
      }
    ]

要实现根据 id 去重,应该得到的结果是这样的:

    [
      {
        id: 1111,
        name: 'aaa'
      },
      {
        id: 2222,
        name: 'bbb'
      },
      {
        id: 3333,
        name: 'ccc'
      }
    ]

那么在es6里应该怎么做呢?

其实一句话就能搞定:

testArr = testArr.filter((s => a => !s.has(a.id) && s.add(a.id))(new Set(testArr)))

或者

testArr = testArr.filter((s => a => !s.has(a.id) && s.set(a.id, a.name))(new Map()))

完整代码如下: 

    let testArr = [
      {
        id: 1111,
        name: 'aaa'
      },
      {
        id: 2222,
        name: 'bbb'
      },
      {
        id: 1111,
        name: 'aaa'
      },
      {
        id: 3333,
        name: 'ccc'
      }
    ]
    testArr = testArr.filter((s => a => !s.has(a.id) && s.add(a.id))(new Set(testArr)))
    // 或者
    // testArr = testArr.filter((s => a => !s.has(a.id) && s.set(a.id, a.name))(new Map())) 
    console.log(testArr)

控制台输出:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值