數組去重(常用方法)


數組去重常用的七種方法(個人總結)

//實例數組
var
arr = [12, 10, 32, 54, 21, 12, 10, 54]

法一  利用對象屬性不會重復的原理 將數組的每一項變成對象的屬性  然后查詢對象屬性 沒有 就添加進新數組

var obj = {}
      var brr = []
      for (var i = 0; i < arr.length; i++) {
        if (obj[arr[i]] == undefined) {
          obj[arr[i]] = 1
          brr.push(arr[i])
        } else {
          obj[arr[i]] += 1
        }
      }
      console.log(obj)//可以看到數組元素以及重復的個數
      console.log(brr)//去重之后的數組

法二 利用sort()將重復的放一起  然后使用splice()刪掉重復的元素

arr.sort(function (a, b) {
        return a - b
      })
      for (var i = 0; i < arr.length; i++) {
        if (arr[i] == arr[i + 1]) {
          arr.splice(i, 1)
          i--
        }
      }
      console.log(arr)

法三 雙循環遍歷數組 重復的刪掉  注意刪除元素之后 要改變下標  es5常用

for (var i = 0; i < arr.length - 1; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(j, 1)
            j--
          }
        }
      }
      console.log(arr)

法四 利用forEach()遍歷數組 用indexOf()判斷是否在新數組 不在就在新數組添加元素

var brr = []
      arr.forEach(function (item) {
        if (brr.indexOf(item) == -1) {
          brr.push(item)
        }
      })
      console.log(brr)

法五 利用forEach()遍歷數組 用includes()判斷是否在新數組 不在就在新數組添加元素 原理與法四類似

var brr = []
      arr.forEach(function (item) {
        if (!brr.includes(item)) {
          brr.push(item)
        }
      })
      console.log(brr)

法六 利用Set結構不會有重復元素的原理 以及...運算符  es6

var brr = [...new Set(arr)]
      console.log(brr)

法七 利用Set結構不會有重復元素的原理 以及Array.from()方法 與法六原理類似

var brr = Array.from(new Set(arr))
      console.log(brr)

這七種方法個人感覺比較容易想到,當然有的原理比較類似就是換了種方法。網上也有很多去重方法感覺大同小異,大家做個參考就好。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM