数组去重

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

版权声明:程序员胖胖胖虎阿 发表于 2022年8月30日 下午9:56。
转载请注明:数组去重 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...