数组去重的两种方法:通过下标去重,通过对象属性的方法去重
//下标的方法 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));
}