• 数组去重(常用方法)


    数组去重常用的七种方法(个人总结)

    //实例数组
    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)

    这七种方法个人感觉比较容易想到,当然有的原理比较类似就是换了种方法。网上也有很多去重方法感觉大同小异,大家做个参考就好。

  • 相关阅读:
    LLVM 笔记(二)—— PHI node
    Ubuntu,sublime快速启动
    ubuntu14.04安装Thinkphp
    ubuntu,scrapy安装
    ubuntu,sublime text 3中文输入的问题
    ubuntu安装beatifulsoup,pip,creepy
    ubuntu,系统设置无法打开
    Ubuntu14.04安装完成的基本配置
    在Sublime Text 3中添加snippet
    领航工作室启用新域名啦!
  • 原文地址:https://www.cnblogs.com/wxf-h/p/14791659.html
Copyright © 2020-2023  润新知