zoukankan      html  css  js  c++  java
  • 数组去重的五种方法

    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
    }
  • 相关阅读:
    1052. 卖个萌 (20)
    1051. 复数乘法 (15)
    1050. 螺旋矩阵(25)
    1049. 数列的片段和(20)
    1048. 数字加密(20)
    1047. 编程团体赛(20)
    1046. 划拳(15)
    怎么用js代码改变单选框的选中状态
    Dom操作--全选反选
    Scoket简介
  • 原文地址:https://www.cnblogs.com/guan-shan/p/10165405.html
Copyright © 2011-2022 走看看