数组去重的五种办法
1.第一种形式就是最简略的set去重(o(n))
var arr = [1,2,2,4,3,4,1,3,2,7,5,6,1]var newArr = new Set(arr)
2.第二种形式就是用indexOf来去重(o(n^3))判断新数组中某个数字是否存在
function fn(arr){ let newArr = [] arr.forEach((val)=>{ if(newArr.indexOf(val) == -1){ newArr.push(val) } }) return newArr }
//利用过滤器去重
function fn(arr) { return arr.filter((item, index, arr) => arr.indexOf(item) === index)}
3.第三种形式一般去重(o(n^3))
for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr.splice(j,1) } }}
4.键值去重(o(n^3))依据键值是惟一的来去重
function fn(arr){ let arr1 = [], arr2 = [] arr.forEach((val)=>{ arr1[val]=val }) //arr1数组会存在空的状况 //所以返回arr2 arr1.forEach((val)=>{ if(!!val){ arr2.push(val) } }) return arr2}
5.sort排序后去重(o(n^2))只比set复杂度低
function fn(arr){ let newArr = [] arr.sort((a,b)=>{ return a-b }) arr.forEach((val,index)=>{ if(val != arr[index+1]){ newArr.push(val) } }) return newArr}