专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

数组去重的5种方法有哪些?

来源:小易整编  作者:小易  发布时间:2024-03-21 07:23
摘要:数组去重的5种方法有哪些?数组去重的5种方法:方法一:双重for循环去重 原理两两比较如果相等的话就删除第二个 例如:11132124 先让第一个1即arr[0]与后面的一个个比较如果后面的值等于arr[0]删除后面...

数组去重的5种方法有哪些?

数组去重的5种方法有哪些?

数组去重的5种方法:

方法一:

双重for循环去重 

原理 两两比较如果相等的话就删除第二个 

例如: 1 1 1 3 2 1 2 4 

先让第一个1 即arr[0]与后面的一个个比较 如果后面的值等于arr[0] 删除后面的值 

第一次结束后的结果是 1 3 2 2 4 删除了后面所有的1 

同理 第二次 第三会删除与自己相同的元素

function noRepeat1(arr){        // 第一层for用来控制循环的次数        for(var i=0; i登录后复制

方法二:

单层for循环

原理和方法一相似

function norepeat(arr){                arr.sort();                //先排序让大概相同的在一个位置,这里为什么说是大概相同 是因为sort排序是把元素当字符串排序的 它和可能排成 1 1 10 11 2 20 3 ... 不是我们想要的从小到大                for(var i = 0; i < arr.length-1;i++){        //还是两两比较 一样删除后面的                    if(arr[i]==arr[i+1]){                        arr.splice(i,1);                        //i-- 和j--同理                        i--;                    }                }                return arr;             }
登录后复制

方法三:

原理:用一个空数组去存首次出现的元素 利用 indexOf 属性 indexOf是返回某个指定的字符在字符串中出现的位置,如果没有就会返回-1 因此我们可以很好的利用这个属性 当返回的是 -1时 就让其存入数组

function noRepeat2(arr){        var newArr = [];        for(var i = 0; i < arr.length; i++){            if(newArr.indexOf(arr[i]) == -1){                        newArr.push(arr[i]);                }        }        return newArr;        }
登录后复制

方法四:

原理:利用对象的思想,如果对象里没有这个属性的话就会返回undefined 利用这个原理当返回的是undefined时让其放入数组然后在给这个属性赋值

function norepeat3(arr) {        var obj = {};        var newArr = [];        for(var i = 0; i < arr.length; i++) {            if(obj[arr[i]] == undefined) {                newArr.push(arr[i]);                obj[arr[i]] = 1;            }        }        return newArr;     }
登录后复制

方法五:

原理:循环比较如果相等的让后面的元素值为0,最后在输出的时候删除为0的这个前提是你的数据里不能有0,但是凡事可以变通你可以设置任何值替代这个0,这个方法是我当时想到实现的所以没有进行很好的优化。

var newArr = [];    //控制外循环    for(var i=0; i登录后复制

推荐教程:《PHP视频教程》

以上就是数组去重的5种方法有哪些?的详细内容,更多请关注易企推科技其它相关文章!


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/1151784.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • c语言的输入函数有哪些

    c语言的输入函数有哪些

    c语言的输入函数有:1、scanf()函数、从标准输入stdin读取格式化输入;2、getchar()函数,从标准输入stdin获取一个字符;3、gets()函数,从标准输入stdin读取一行;4、getch()函数,从stdin流中读取字...

  • 因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有哪些

    因特网能提供的最基本服务有:1、www服务;2、电子邮件e-mail服务;3、远程登录telnet服务;4、文件传输ftp服务;5、usenet网络新闻组服务;6、电子公告牌服务。本教程操作环境:windows7系统、DellG3电脑。因...

  • 有没有录制电脑屏幕的方法

    有没有录制电脑屏幕的方法

    电脑屏幕有录制的方法吗有两个方法一是用win10电脑自带的录屏软件来录,打游戏的时候按一下【win+g】就行了二是用其他的录制软件来录制,比如“迅捷屏幕录像工具”,操作方法如下:1、首先在电脑上将这个工具下载下来。下载完成后打开工具,主页...

  • 前端开发需要哪些软件

    前端开发需要哪些软件

    编程一般用的软件有:1、hbuilder;2、sublimetext;3、webstorm;4、phpstudy;5、dreamweaver;6、visualstudio;7、phpstorm;8、notepad等等。孔子说,“工欲善其...

  • win7硬件加速设置方法

    win7硬件加速设置方法

    有很多网民在玩一些游戏或运行一些大软件,下载大文件,可能会觉得系统运行不够无忧无虑,这次可以尝试加速硬件。下面的小边将为您介绍如何设置win7的硬件加速方法。1.右击桌面空白处,然后点击右键菜单中的屏幕分辨率选项。2.进入电脑屏幕分辨率设置...

  • Java 中的各种锁有哪些?

    Java 中的各种锁有哪些?

      Java中15种锁的介绍  在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:  公平锁/非公平锁  可重入锁/不可重入锁  独享锁/共享锁  互斥锁/读写锁  乐观锁...

  • java8新特性有哪些

    java8新特性有哪些

    java8新特性有:1、lambda表达式;2、方法引用;3、默认方法;4、新编译工具;5、streamapi;6、datetimeapi;7、option;8、nashornjavascript引擎。Java8新增了非常多的特性...

  • 网络安全相关内容有哪些

    网络安全相关内容有哪些

    网络安全相关内容有:1、网络攻击;2、信息安全;3、防抵赖问题;4、网络内部安全防范;5、网络防病毒;6、网络数据备份与灾难恢复等。一、网络攻击1、对网络的攻击大致可以分为两类:服务供给和非服务攻击。从攻击的手段可以分为8类:系统入侵类攻击...

  • 周排行
  • 月排行
  • 年排行

精彩推荐