1. 程式人生 > >陣列去重的五種方法

陣列去重的五種方法

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 }

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
}