首先针对简单的数组 [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)
控制台输出: