数组去重
var arr=[1,2,3,1,2,3,5,6,23,4,2,5,7,9,23,6,5,3,2,21,4,65,3,3,4,6,2,5,7,7]
方法一:i从前到后遍历,j从后到i遍历,去掉相同的j
for(var i=0;i<arr.length;i++){ for(var j=arr.length;j>i;j--){ if(arr[i]===arr[j]){ arr.splice(j,1); } } } console.log(arr);
方法二:设置一个开关,在两层循环里判断如果有相同的数值就关掉开关,没有相同的打开开关push到数组中,
var newArr=[] for(var i=0;i<arr.length;i++){ var bool = false for(var j=0;j<i;j++){ if(arr[i]===arr[j]){ bool=true break } } if(!bool){ newArr.push(i) } } arr=newArr newArr=null console.log(arr)
方法三:直接用indexOf判断新数组是否有这个元素,如果有不进入if,如果没有就push没有的元素
var newArr=[] for(var i=0;i<arr.length;i++){ if(newArr.indexOf(arr[i])===-1){ newArr.push(arr[i]) } } arr=newArr newArr=null console.log(arr)
方法4:利用对象的["属性名"],来排除已有的元素,这样未有的元素就可以添加进新数组,
同样可以去重,必须得给obj[arr[i]]一个值,否则每次进入if语句obj[arr[i]]的值都是underfined
var newArr=[] var obj={} for(var i=0;i<arr.length;i++) { if (!obj[arr[i]]) { obj[arr[i]]=1 newArr.push(arr[i]) } } console.log(newArr,obj)
去重并统计重复的个数
var newArr=[] var obj={} for(var i=0;i<arr.length;i++) { if (!obj[arr[i]]) { obj[arr[i]]=1 }else{ obj[arr[i]]++ } } console.log(newArr,obj)