js数组去重
一,使用嵌套循环,改变原数组
var arr = [1,5,1,1,5,6,7,9] for(var i=0;i<arr.length-1;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[j]==arr[i]){ arr.splice(j,1) j--; } } } console.log(arr)
二,创建新数组,判断新数组中是否存在该值indexOf
var arr = [5,2,5,2,2,0] var arrNew = [] for(var i=0;i<arr.length;i++){ if(arrNew.indexOf(arr[i])<0){ arrNew.push(arr[i]) } } console.log(arrNew)
三,创建新数组,利用对象记录判断新数组中是否存在该值(改动此方法后也可获得数组中每个元素出现的次数)
var arr = [5,2,5,2,2,0] var arrOb = {},arrNew=[] for(var i=0;i<arr.length;i++){ var el = arr[i] if(!arrOb[el]){ arrOb[el] = true arrNew.push(el) } } console.log(arrNew)
四,比较数组元素的下标和第一次出现的位置
var arr = [5,2,5,2,2,0] for(var i=0;i<arr.length;i++){ if(arr.indexOf(arr[i])!=i){ arr.splice(i,1) i-- } } console.log(arr)
五,利用filter
var arr = [5,2,5,2,2,0] var as=arr.filter((item,index,ar)=>{ if(ar.indexOf(item) == index){ return ar } }) console.log(as)
六,ES6 new Set()自动去重,返回类数组,然后使用Array.from转化成数组
var arr = [5,2,5,2,2,0] var arrN = new Set(arr) console.log(Array.from(arrN))