数组去重的两种方法:通过下标去重,通过对象属性的方法去重
//下标的方法
function getArray(arr){
var newArray=[];
arr.forEach(function(item,index,arr){
if(newArray.indexOf(item)==-1){
newArray.push(item)
}
})
return newArray;
}
//对象属性的方法
function getArray2(arr){
var newObject={};
var newArray=[];
arr.forEach(function(item,index,arr){
if(!newObject[item]){
newArray.push(item);
newObject[item]=1;
}else{
newObject[item]++;
}
})
return newArray
}
}
还有去重的方式可以是:
遍历去重:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中
先排序后去重:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组
ES6的set方法
//遍历去重
function unique(arr){
var res = [arr[0]];
for(var i=1;i<arr.length;i++){
var repeat = false;
for(var j=0;j<res.length;j++){
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
//先排序,后去重
function unique(arr){
var arr2 = arr.sort();
var res = [arr2[0]];
for(var i=1;i<arr2.length;i++){
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
//ES6中的set 用拓展运算符
let unique=[...new Set(array)];
//Es6中的set方法 用Array.from转换成数组
function dedupe(array){
return Array.from(new Set(array));
}