一行代码去重
上班摸鱼~
一、过滤器filter
var a = [1, 2, 5, 4, 8, 52, 4, 1, 2, 5, 1];
a.filter((item, index, arr) => index === arr.indexOf(item))
//[1, 2, 5, 4, 8, 52]
因为indexOf会返回数组上查找到的第一个值。
例如
参数 | index | indexOf | indexOf===index |
---|---|---|---|
1 | 0 | 0 | true |
1 | 7 | 0 | false |
1 | 10 | 0 | false |
因此只有第一个参数会返回true,以此做到去重
Set()
ES6的新特性,和数组一样但值都是唯一性的,可以用来做去重
var a = [1, 2, 5, 4, 8, 52, 4, 1, 2, 5, 1];
new Set(a)//Set(6) {1, 2, 5, 4, 8, …},Set实例对象
...new Set(a) //1 2 5 4 8 52
[...new Set(a)] //[1, 2, 5, 4, 8, 52]