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


    1.双重for循环去重 

      将数组中的每一项与它后面的每一项进行比较,没有重复就添加进新的空数组
      var arr = [3, 5, 2, 6, 8, 5, 7, 2];
      var newArray = [];
      for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] === arr[j]) {
            j=++i;
          }
        }
          newArray.push(arr[i]);
      }

    2.indexOf 索引查找法

      声明一个老数组和一个新数组,看老数组的每一项是否存在于新数组中,不存在就添加进新
      数组。
      let arr = [3, 5, 2, 5, 7, 23, 5, 7];
      let newArr = [];
      arr.forEach( (val,index) => {
        if (newArr.indexOf(val)== -1) {
          newArr.push(val)
        }
      })

    3. 空对象记录重复的值

      let arr = [3, 5, 2, 5, 7, 23, 5, 7];

      let newArr = []

      let obj = {}

      arr.forEach((val) => {

        if (!obj[val]) {

          obj[val] = true

          newArr.push(val)

        } 

      })

    4. filter过滤

      let arr = [3, 5, 2, 5, 7, 23, 5, 7];

      let r = arr.filter( (val,index,self)=>{

        return self.indexOf(val) == index 

      })  

    ES6数组去重方法

    5.set方法
      声明一个有重复值的数组,通过set构造函数将数组转换成没有重复值的对象,再将对象转成数组
      let arr = [3, 5, 2, 5, 7, 23, 5, 7];
      let obj = new Set(arr)

      let newArr = Array.from(obj)

    6.拓展运算符 ... 

      将数组转为用逗号分隔的参数序列,具有合并复制数组等功效
      let arr = [3, 5, 2, 6, 5, 7];
      let newArr = [...new Set(arr)];

  • 相关阅读:
    【微信开发之问题集锦】redirect_uri 参数错误
    调度算法之时间片轮转算法
    快速排序算法分析和实现
    单链表(c语言实现)贼详细
    调度算法之最短作业优先算法
    HDU1027
    HDU1753 (大正小数相加)
    HDU 1715 (大数相加,斐波拉契数列)
    HDU 1316 (斐波那契数列,大数相加,大数比较大小)
    HDU1047(多个大数相加)
  • 原文地址:https://www.cnblogs.com/surui/p/8997451.html
Copyright © 2011-2022 走看看