一行代码实现数组去重(ES6)

一行代码实现数组去重(ES6)


ES6中新增了Set数据结构,类似于数组,但是它的成员都是唯一的,其构造函数可以接受一个数组作为参数,如:

let array = [1,1,1,1,2,3,4,4,5,3];let set =newSet(array);console.log(set);// => Set {1, 2, 3, 4, 5}

ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node List,以及ES6中新增的Set和Map等可遍历对象,如:

let set =newSet(); set.add(1).add(2).add(3);let array =Array.from(set);console.log(array);// => [1, 2, 3]

于是,现在我们可以用一行代码实现数组去重了:

let array =Array.from(newSet([1,1,1,2,3,2,4]));console.log(array);// => [1, 2, 3, 4]

ES5

// 最简单数组去重法

/*

* 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中

* IE8以下不支持数组的indexOf方法

* */

function uniq(array){

    var temp = []; //一个新的临时数组

    for(var i = 0; i < array.length; i++){

        if(temp.indexOf(array[i]) == -1){

            temp.push(array[i]);

        }

    }

    return temp;

}

var aa = [1,2,2,4,9,6,7,5,2,3,5,6,5];

console.log(uniq(aa));

你可能感兴趣的:(一行代码实现数组去重(ES6))