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

      先介绍两种比较LOW的方式

        1.

    let ary=[1,2,3,1,2,3,3];
    let newary=[];
    //创建一个新数组保存不重复的元素
    ary.forEach(item=>{
      if(newary.includes("item"))//includes存在兼容时问题,并且性能不好
        return;
      newary.push(item);
    });

        2.直接使用splice

    let ary = [1,2,3,2,1,4];
    //直接在原数组操作
    for(let i=0;i<ary.ength;i++){
      let compare = ary[i];
      for(let j=i+1;j<ary.length;j++)
        {
            if(compare===item)
              ary.splice(j,1);
              j--;//数组塌陷,不知道什么是数组塌陷可以参考我的上一篇随笔
        }    
    }

      接下来介绍一种比较优秀的去重方式,基于对象处理

      

    let ary=[1,2,3,3,2,1,23,2];
    let obj={};
    for(let i=0;i<ary.length;i++)
    {
      let item = ary[i];
      if(obj[item]!==undefined)
    {
    //ary.splice(i,1); //i--;
    //splice性能不好不建议使用
    ary[i] = ary[ary.length-1];
    ary.pop();
    i--;
    continue;
    } obj[item]
    = item;//而非obj.item=item,这边是将item的值作为属性,而 //非"item"作为属性。 }

       接下来介绍一种基于ES6语法的极简方式

    let ary = [1,2,3,4,2,1,3];
    ary = [...new Set(ary)];
    //两行代码直接实现去重
  • 相关阅读:
    《DSP using MATLAB》Problem 6.4
    《DSP using MATLAB》Problem 6.3
    《DSP using MATLAB》Problem 6.1
    《DSP using MATLAB》Problem 5.38
    整除分块+取模
    尺取法(滑窗,双指针)
    uva247电话圈(floyd)
    uva1151并查集+最小生成树
    uva1395 苗条的生成树
    uva10562看图写树
  • 原文地址:https://www.cnblogs.com/angle-xiu/p/11319200.html
Copyright © 2011-2022 走看看