zoukankan      html  css  js  c++  java
  • 数组去重古与今

      关于数组去重这个问题,我曾经在牛客网上就遇到过一次,后来在做一些网上的笔试的时候又碰到了这个问题,其实数组去重的方法有非常多种,五花八门的。但其实我觉得这只是一件很小的事,何必弄得好像实现的方法越复杂就越厉害一样。废话不多说,这里我只介绍我所认可的两种方法。

      第一种,就是很普通的思维,比如,对于[1,2,2,3,3,3,4,4,4,4]这个数组来说,我们的思路就是,新建一个空的数组,然后对这个要处理的数组做遍历,遍历的每一项都会问一下新数组:“你有没有存过我啊?”,存过(新数组.indexOf(i)>0),那么就不再存了;没存过(新数组.indexOf(i)==-1),就存进去。所以就有了如下代码:

     1     var arr=[1,2,2,3,3,3,4,4,4,4];
     2         (function (arr){
     3             newArr=[];
     4             for(let i=0;i<arr.length;i++){
     5                 if(newArr.indexOf(arr[i])===-1){
     6                     newArr.push(arr[i]);
     7                 }
     8             };
     9 
    10         })(arr);
    11         
    12         console.log(newArr);

      在这里,我用一个自执行的匿名函数对数组做了个遍历,由于newArr是一个全局变量,在执行后不会被销毁,而是返回出去,最后打印的结果正是[1,2,3,4];

      这是es5最朴实无华的写法,可以说是一种“古代的写法”吧,es6中有一种结构叫set,它天生就自带互异性,就是说肯定不会有重复的,看一段代码就知道了。

    1     var s=new Set(arr);//结果为Set{1,2,3,4}
    2         var newArr=Array.from(s);//把这个类数组对象转为真正的数组
    3         console.log(newArr);

      怎么样?是不是超简单,在第一行代码中就已经得到了一个无重复的类数组对象,而Array.from的作用正是把一个类数组对象(比如平常我们用document.getElementsByTagName获取到的元素集合就是类数组对象)转变为真正的对象。

  • 相关阅读:
    AntSword 中国蚁剑的下载安装配置(附下载文件)
    开园第一笔
    四舍五入小技巧
    PAT B# 1025 反转链表
    WebService如何根据对方提供的xml生成对象
    解决Web部署 svg/woff/woff2字体 404错误
    解决TryUpdateModel对象为空的问题
    IIS集成模式下,URL重写后获取不到Session值
    SQLServer清空数据库中所有的表并且ID自动归0
    win2003 64位系统IIS6.0 32位与64位间切换
  • 原文地址:https://www.cnblogs.com/zhangnan35/p/8413993.html
Copyright © 2011-2022 走看看