总结几种js数组去重的方法:
第一种:创建一个新数组res,遍历原数组arr,
如果遍历的arr数组元素在新数组res数组中不存在,就吧这个遍历出来的元素添加到新数组res中,否则跳出内层循环,不进行res数组元素添加
function quchongArray(arr){ let res=[]; for(var i=0;i<arr.length;i++){ let flag = true; for(var j=0;j<res.length;j++){ if(arr[i] ===res[j]){ flag =false; break; } } if(flag){ res.push(arr[i]); } } return res; } let arr =[1,2,3,4,3,2,6,2,12,31,1,2,3]; console.log(quchongArray(arr));
第二种:先进行数组排序,然后定一个新的数组,遍历排序后的数组,如果排序后的数组元素不等于新数组的最后一个元素,则添加。
function quchongArray(arr) { function sortNumber(a, b) { return a - b; } let newArr = arr.sort(sortNumber); let res = [] for(let i=0;i<newArr.length;i++){ if(newArr[i]!=res[res.length-1]){ res.push(newArr[i]); } } return res; } let arr = [1, 2, 3, 4, 3, 2, 6, 22, 12, 31, 1, 2, 3]; console.log(quchongArray(arr));
第三种:利用对象的特性进行排序。遍历数组,如果该数组元素不是对象的属性,就添加到新数组中
function quchongArray(arr){ let obj = {}; let res=[]; for(let i=0;i<arr.length;i++){ if(!obj[arr[i]]){ res.push(arr[i]); obj[arr[i]]=1; } } return res; } let arr = [1,2,3,4,3,2,1,5,2,3,6]; console.log(quchongArray(arr));
第四种:通过 filter筛选出,去重之后的数组。如果indexOf方法在该元素索引之后在在查不到该元素的位置。表示该元素不存在,符合要求
function quchongArray(arr){ return arr.filter(function(item,index,array){ return array.indexOf(item,index+1) === -1 }) } let arr = [1,2,3,4,3,2,1,5,2,3,6]; console.log(quchongArray(arr));
第五种:通过es6,Set集合不能包含重复元素的特性来进行去重处理,最后将set对象转换为数组
function quchongArray(arr){ return Array.from(new Set(arr)); } let arr = [1,2,3,4,3,2,1,5,2,3,6,2,1,7]; console.log(quchongArray(arr));