数组去重:
一个对象中不允许有重复的下标 hash={}
1.
var arr=[1,2,3,1,4,2,4,5,2,3,4,2];
var hash={};
for(var i=0;i<arr.length;i++){
hash[arr[i]]=i;
}
var res=[];
for(res[i++] in hash);
console.log(res);
2.向一个数组中添加十万个元素,每个元素随机生成
var arr=[];
for(var i=0;i<100000;i++){
arr.push(parseInt(Math.random()*10000))
}
第一种:传统,利用对象的属性名不能重复的特点
function unique1(arr){
var obj={};
for(var n of arr){
obj[n]=1;
}
var newArr=[];
for(var key in obj){
newArr.push(parseInt(key));
}
return newArr;
}
var newArr=unique1(arr);
console.log(newArr);
第二种:利用Es5标准中的新类型set,值不允许重复的集合
function unique2(arr){
//将原数组arr放入一个new set()对象中,利用new set()不允许重复的特点,自动去重
var set=new set(arr);
//将set打散后,放入新数组中
var newArr=[...set];
return newArr;
return [...new set(arr)];
}
var newArr=unique2(arr);
console.log(newArr);