js数组去重的几种方法

1. zepto实现数组去重的方法:
var uniq = function(array){
    return [].filter.call(array, function(item, index){
        return array.indexof(item) == index;
    })
}

判断元素在数组中首次出现的位置,是否等于它在数组中的位置。

var a = [1, 1, 2, 2, 3, 3, 4]

item | array.indexof(item) | index
1              0               0   //v
1              0               1
2              2               2   //v
2              2               3
3              4               4   //v
3              4               5
4              6               6   //v

uniq(a);   //[1,2,3,4]
2. 利用ES6中 Set 的特性

Set 是ES6提供的一种新的数据结构。它类似于数组,但是成员的值都是唯一的,没有重复的值。
它接收一个数组或者类似于数组的参数。

var arr = [...new Set([1,1,2,2,3,3,4])];

arr  // [1, 2, 3, 4]
3. 遍历
var arr = [];
[1,1,2,2,3,3,4].forEach((item, index)=>{
    if(arr.indexOf(item) === -1) {
        arr.push(item);
    }
});

arr  // [1, 2, 3, 4]

这种方法弊端:需要定义一个新的数组来储存结果。

你可能感兴趣的:(js数组去重的几种方法)