美文网首页前端笔记本
js数组去重的几种方法

js数组去重的几种方法

作者: 春困秋乏冬眠夏打盹 | 来源:发表于2017-12-21 18:02 被阅读4次
    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数组去重的几种方法

        本文链接:https://www.haomeiwen.com/subject/quyawxtx.html