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)];

  • 相关阅读:
    定时任务的分布式调度
    springmvc 静态资源 配置
    activemq 持久化
    函数式编程与面向对象编程的比较
    LeetCode 108——将有序数组转化为二叉搜索树
    LeetCode 104——二叉树中的最大深度
    LeetCode 700——二叉搜索树中的搜索
    线性代数之——四个基本子空间
    线性代数之——线性相关性、基和维数
    线性代数之——秩和解的结构
  • 原文地址:https://www.cnblogs.com/surui/p/8997451.html
Copyright © 2011-2022 走看看