一行代码实现数组去重(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));