• 数组去重的几种方法


      先介绍两种比较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)];
    //两行代码直接实现去重
  • 相关阅读:
    iOS 成员变量,实例变量,属性变量的区别,联系
    iOS类别(category)不能添加成员变量但是可以添加属性的问题
    iOS缓存机制详解
    ios数据缓存方法
    仿360圆圈自动隐藏效果
    html 背景透明文字不透明
    netty
    关注网站
    关注URL
    DNS之XX记录
  • 原文地址:https://www.cnblogs.com/angle-xiu/p/11319200.html
Copyright © 2020-2023  润新知