数组去重的三种方法

function quchong(arr){
    let brr = [];
    for(var i = 0;i<arr.length;i++){
        if(brr.indexOf(arr[i]) < 0){
           brr.push(arr[i]);    
        }
    }
    return brr;
}

function quchong(arr){
    let obj = {};
    let brr = [];
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]] = 1;
            brr.push(arr[i]);
        }
    }
    return brr;
}

  上面去重的方法老生常谈了,一种是用数组的indexOf的方法,检索数组里面是否存在该元素,如果不存在就push进另外一个数组里面。
一种是利用对象的key值不会重复的特性。

ES6提供了一种新的数据结构Set,类似于数组,但是成员的值都是唯一的,没有重复的值。

Set本身是一个构造函数,用来生成Set数据结构。

const s = new Set();

然后也可以接受一个数组来作为参数,用来初始化。

const set = new Set([1,2,3,3,4,5]);

[...set]   //[1,2,3,4,5]

 

所以数组去重的另外一种方法:

[...new Set(array)] 

或者用另外一种方式转化为数组,Array.from()的方法,将一个set对象转化为Array对象。

Array.from方法从一个类数组对象或者可迭代对象中创建一个新的数组实例。可迭代的对象是指那些具有Symbol.iterator属性的对象。可以使用for...of进行遍历。比如:Array,Map,Set,String,arguments,NodeList等对象。

Array.from(new Set(a));

 下节着重讲下:ES6中的Set结构

posted @ 2018-05-15 15:17  tangjiao_Miya  阅读(250)  评论(0编辑  收藏  举报