zoukankan      html  css  js  c++  java
  • 数组去重操作几种方法

    1. ES6  Set

      let a = [1,1,2,2,3,4,5,6,7,7,7];
      Array.from(new Set(a));   //[1, 2, 3, 4, 5, 6, 7]
      [...new Set(a)];  //[1, 2, 3, 4, 5, 6, 7]

    2. IndexOf 判断

      let result = [];
      a.map(val => {
        if(result.indexOf(val) < 0){
    
          result.push(val);
        }
      })

    3.sort 排序后 两两相邻的做比较

    function unique(arr) {
        if (!Array.isArray(arr)) {
            console.log('type error!')
            return;
        }
        arr = arr.sort()
        var arrry= [arr[0]];
        for (var i = 1; i < arr.length; i++) {
            if (arr[i] !== arr[i-1]) {
                arrry.push(arr[i]);
            }
        }
        return arrry;
    }
    unique(a)

    4. includes 去重 类似 indexOf

      let result = [];
      a.map(val => {
        if(result.includes(val) < 0){
          result.push(val);
        }
      });

       console.log(result) // [1,2,3,4,5,6,7]

    5. map 去重

      function unique(arr) {
        let map = new Map();
        let array = new Array();  // 数组用于返回结果
        for (let i = 0; i < arr.length; i++) {
          if(map .has(arr[i])) {  // 如果有该key值
            map .set(arr[i], true); 
          } else { 
            map .set(arr[i], false);   // 如果没有该key值
            array .push(arr[i]);
          }
        } 
        return array ;
      }
      unique(a);

    其他包括很多 filter  lastIndexOf 等等大同小异

  • 相关阅读:
    记一次百度面试题
    深度拷贝对象
    spring boot 学习笔记
    mac Zip 常用命令
    Mac OS 终端下使用 Curl 命令下载文件
    懒人必备的移动端定宽网页适配方案
    前端面试题之 sum(2)(3) (链式调用,toString,柯里化,数组操作)
    web上的复制
    fileupload上传文件时带参数
    Mac下Nginx环境配置
  • 原文地址:https://www.cnblogs.com/Mr-Rshare/p/12877658.html
Copyright © 2011-2022 走看看