zoukankan      html  css  js  c++  java
  • JavaScript数组去重方法总结

    一:[...new Set(arr)]和Array.from(new Set(arr))

      ES6方法,在不考虑兼容的情况下,代码最少。无法去除空对象{}

    二:双层for循环嵌套,再利用数组方法splice删除重复项

    var unRepeat = function(arr){
          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) 
                  j--
                }
            }
          }
          return arr
        }

    ES5常用方法,利用外层循环元素,内层循环值进行比较,数组方法splice删除相同的那个值(splice方法会修改原数组)

    三:数组方法indexof

     var unRepeat = function(arr){
          var array = []
          for(var i=0;i<arr.length;i++){
            if(array.indexOf(arr[i]) == -1){
              array.push(arr[i])
            }
          }
          return array
        }

    四:sort排序去重

    var unRepeat = function(arr){
         var arr = arr.sort()
         var array = [arr[0]]
         for(var i=1; i<arr.length;i++){
           if(arr[i] !== arr[i-1]){
             array.push(arr[i])
          }
         }
          return array
        }

    五:利用include方法  (返回boolean值)代码与上述indexof相似

    六:使用hasOwnProperty

    var unRepeat = function(arr){
          let obj = {}
          return arr.filter((item,index,arr)=>{
            return obj.hasOwnProperty(typeof item + item) ? false :(obj[typeof item + item] = true) //typeof "wo" + "wo" => "stringwo"
          })
        }

    利用hasOwnProperty判断是否有对象属性,再结合filter返回数组。此方法与上述不同的是 能把空对象也去重

    七:利用filter和indexof相结合去重

    var unRepeat = function(arr){
          return arr.filter((item,index,array) =>{
            return array.indexOf(item,0) == index
          })
        }
  • 相关阅读:
    CV大牛/实验室主页
    mendeley使用技巧
    卷积理解与思考
    CMake构建OpenGL项目
    信号与系统学习(2)-跃阶信号
    信号与系统学习(1)-正弦信号和指数信号
    txt转换为mat
    matlab取整函数
    三维观察流水线的理解
    C#中文和UNICODE字符转换方法
  • 原文地址:https://www.cnblogs.com/xian-wen/p/13098015.html
Copyright © 2011-2022 走看看