数组去重的五种办法
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}