数组去重
1、定义一个新数组,并存放原数组的第一个元素,然后将原数组一一和新数组的元素对比,若不同放在新数组中
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; }
2、先排序再去重,(先将原数组排序,再与相邻的进行比较,如果不同则存入新数组)
function unique(arr){ var arr2 = arr.sort();//排序 var res = [arr2[0]]; for(var i=0;i<arr2.length;i++){ //遍历arr2,判断arr2[i]与新数组的的最后一位比较,不等,则push进数组 if(arr2[i]!=res[res.length-1]){ res.push(arr2[i]) } } return res; }
3、利用对象属性去重
function unique(arr){ var newArr=[] var obj={} for(var i=0;i<arr.length;i++){ if(!obj[arr[i]]){ obj[arr[i]]=1 (切记,不能等于0,不然等于没有操作) newArr.push(arr[i]) } } return newArr }
4、利用数组下标属性去从重
当数组中没有该项的时候,返回-1,否则返回该项的索引值
function unique(arr){ var newArr = [arr[0]]; for(var i=1;i<arr.length;i++){ if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } return newArr; }