今天来聊一聊js数组去重的一些方法,包括一些网上看到的和自己总结的,总共5种方法,希望对大家有帮助。

第一种:遍历数组法

这种方法最简单最直观,也最容易理解,代码如下:

这种方法很好理解,利用了indexOf()方法(indexOf()方法如果查询到则返回查询到的第一个结果在数组中的索引,如果查询不到则返回-1)。先创建一个新的空数组用来存储新的去重的数组,然后遍历arr数组,在遍历过程中,分别判断newArr数组里面是不是有遍历到的arr中的元素,如果没有,直接添加进newArr中,如果已经有了(重复),那么不操作,那么从头到尾遍历一遍,正好达到了去重的目的。

第二种:数组下标判断法

这种方法也比较好理解,代码如下:

这和第一种方法有重叠,不说多余的,直接看if这里,在遍历arr的过程中,如果在arr数组里面找当前的值,返回的索引等于当前的循环里面的i的话,那么证明这个值是第一次出现,所以推入到新数组里面,如果后面又遍历到了一个出现过的值,那也不会返回它的索引,indexof()方法只返回找到的第一个值的索引,所以重复的都会被pass掉,只出现一次的值都被存入新数组中,也达到了去重的目的。

第三种:排序后相邻去除法

这种方法用到了sort()方法,代码如下:

这种方法的思路是:先用sort()方法把arr排序,那么排完序后,相同的一定是挨在一起的,把它去掉就好了,首先给新数组初始化一个arr[0],因为我们要用它和arr数组进行比较,所以,for循环里面i也是从1开始了,我们让遍历到的arr中的值和新数组最后一位进行比较,如果相等,则pass掉,不相等的,push进来,因为数组重新排序了,重复的都挨在一起,那么这就保证了重复的这几个值只有第一个会被push进来,其余的都和新数组的被push进来的这个元素相等,会被pass掉,也达到了去重的效果。

第四种:优化的遍历数组法

思路:两层for循环,外面一层是控制遍历到的前一个arr中的元素,里面一层控制的是第一层访问到的元素后面的元素,不断的从第0个开始,让第0个和他后面的元素比较,如果没有和这个元素相等的,则证明没有重复,推入到新数组中存储起来,如果有和这个元素相等的,则pass掉它,直接进入下一次循环。从第1个开始,继续和它后面的元素进行比较,同上进行,一直循环到最后就是:不重复的都被推入新数组里面了,而重复的前面的元素被pass掉了,只留下了最后面的一个元素,这个时候也就不重复了,则推入新数组,过滤掉了所有重复的元素,达到了去重的目的。

第五种:数组遍历法

思路:也是两层for循环,外层for循环控制的是arr数组的遍历,内层for循环控制的是新数组的遍历,从第0位开始,如果新数组中没有这个arr数组中遍历到的这个元素,那么状态变量bl的值还是true,那么自然进入到了if中把这个值推入到新数组中,如果有这个元素,那么代表重复,则把状态变量bl取值改为false,并且跳出当前循环,不会进入到if内部,而进入下一次外层开始的循环。这样循环往复,最后也达到了去重的效果。

js最简单数组去重_js数组去重最常用的5种方法相关推荐

  1. js计算数组中每个元素出现的次数(2种方法)

    js计算数组中每个元素出现的次数(2种方法) js动态生成唯一id Javascript生成全局唯一标识符(GUID,UUID)的方法

  2. java打印数组常用的几种方法

    java打印数组常用的几种方法 1.使用 for 循环 最"朴实无华"的方法,却也是屡试不爽的方法,直接打印变量名不成,逐个遍历打印一定是可以的! int[] intArray = ...

  3. JS实现深拷贝常用的几种方法

    JS实现深拷贝常用的几种方法 <!DOCTYPE html> <html lang="en"> <head><meta charset=& ...

  4. Qt5.9一个简单的多线程实例(类QThread)(第一种方法)

    Qt开启多线程,主要用到类QThread.有两种方法,第一种用一个类继承QThread,然后重新改写虚函数run().当要开启新线程时,只需要实例该类,然后调用函数start(),就可以开启一条多线程 ...

  5. js判断多边形的坐标点是顺时针还是逆时针的两种方法

    js判断多边形的坐标点是顺时针还是逆时针的两种方法 关键算法 通过极值点与其相邻点的构成的矢量走向算出多边形走向 通过计算各左边点所在矢量夹角的角度总和来推算多边形走向 由于arcgis对顺时针生成的 ...

  6. js 去重某个键值 数组对象_JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的.JS实现数组去重可以有多种方法: 一.简单的去重方法 用一个类比来简单解释一下这种去重方法的思路:A篮子里有若干个不同颜色和大小的球,旁边放一 ...

  7. js 去重某个键值 数组对象_js数组去重(包括对象数组去重)

    2019.08.02补: 对象数组建议直接循环然后使用工具库(lodash)的深比较,评论里也有指出,文章的方法有些取巧了 生产环境不要这么玩~. 方法一:利用ES6的Array.from()/扩展运 ...

  8. js数组如何按照固定的下标去重_js数组去重的三种常用方法总结

    思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 代码如下: Array.prototype ...

  9. js数组如何按照固定的下标去重_js数组去重方法总结

    假设我们有数组arr,并且声明新数组hash用来存放去重后的元素: var arr = [23,44,5,2,23,5,1,7,8,7]; //包含重复元素 var hash= []; //声明新数组 ...

最新文章

  1. error: Can not locate config makefile for product “xx“.
  2. 多路三线RTD电阻温度采集电路设计方案
  3. 程序员MM的自白:磨人小妖精之安卓碎片化
  4. 什么样的电路仿真软件可以显示电流流动?
  5. cnn识别mnist、Fashion-MNIST(pytorch)
  6. signature=6a8815f5009aacac86e725bea54f840f,A wave packet signature for complex networks
  7. SAP BTP 应用 mta.yaml 里的 sap-btp-project1-dest-content module
  8. swift mvvm_Swift中的MVVM设计模式概述
  9. 罗永浩直播公司回应被列入经营异常:更换了地址 一切正常
  10. 网页制作初期,必须的东西
  11. 全国区号码表(绝对全)
  12. 添加MSN客服代码,可显示MSN在线和不在线,自动打开MSN聊天窗口
  13. 图片热区——map的用法
  14. 格力手机2 官方固件_ROG游戏手机2备货不足,官方发表致歉信
  15. 助力无人船舶,开拓水上智能
  16. 产业洞察 | 软件定义新IT,深信服为数字化转型架设新设施
  17. xbap中如何将3D动画发布到web浏览器
  18. 香港大学的计算机专业,香港大学计算机专业研究方向介绍(英文)
  19. (附源码)计算机毕业设计SSM银行服务评价系统
  20. 一文读懂IaaS、PaaS、SaaS的含义及区别

热门文章

  1. 网络层协议和IP数据包的格式(详解)
  2. 国密数字证书离线申请流程-国密数字信封解析
  3. Sentinel初始化之InitFunc实现类加载
  4. python传送文件到其他电脑_用Python实现电脑手机文件互传秒完成
  5. IDEA 导入jar包
  6. 增强学习/强化学习 综述
  7. 学计算机的怎样当老师,大学里的“伪师范”专业,毕业后很难当老师,学生需慎重考虑...
  8. 2022年潜江中级工程师职称查询方式有哪些呢?甘建二
  9. Global Processing Services (GPS)通过任命区域负责人提振亚太团队
  10. php键值升序排列,php数组排序之ksort-对数组的元素键名进行升序排序_PHP教程