400-650-7353
您所在的位置:首页 > IT干货资料 > web前端 > 【Web前端基础知识】数组去重的方法

【Web前端基础知识】数组去重的方法

  • 发布: 优就业it培训
  • 来源:优就业
  • 2021-06-18 17:12:08
  • 阅读()
  • 分享
  • 手机端入口

无论是在面试还是实际写代码中都会经常遇到数组去重,那接下来我们介绍几种数组去重的方法。

  1. var arr = [3,6,4,1,8,8,8,8,8,4,0,9,2,7,8,5,3,4,8,9,3]; 

1、第一种是声明一个空数组,通过indexOf( )查找的方法,判断这个新数组中有没有该元素,如果没有即查找结果为 -1 时,将这个元素添加到新数组的末尾。

js代码为:

  1. //1.创建一个空数组,把arr里面的元素往空对象中添加,判断如果空数组没有这个元素,加 
  2.        var array = []; 
  3.        for( var i = 0; i<arr.length; i++ ) { 
  4.            if( array.indexOf(arr[i]) == -1 ) { 
  5.                array.push( arr[i] ); 
  6.            } 
  7.        } 
  8.         console.log(array); 

2、第二种是操作数组自身:

从第一项开始,拿该项和后面的所有项作比较,如果后面有和比较项相等的,就把后面的一项删除。删除的方法会改变当前数组的长度,后面的元素会自动往前挪,所以补位上来的元素需要在进行一次比较,让下标进行自减操作。

比较的详细过程即是为:

拿数组中第一个元素,和后面所有的元素进行比较,如果一样删除后面哪一个

拿数组中第二个元素,和后面所有的元素进行比较,如果一样删除后面哪一个

...

数组中所有的元素后需要和后面的进行比较,所以需要进行for循环的嵌套

代码为:

  1. for(var i = 0; i<arr.length; i++) { 
  2.             //和后面所有的元素进行比较 
  3.             for(var j = i+1; j<arr.length; j++) { 
  4.                 if( arr[i] == arr[j] ){ //重复,删除后面的元素 
  5.                     arr.splice(j,1); 
  6.                     j--;  
  7. //删除一个元素后元素位置会自动往前挪,下标也需要往前j-- 
  8.                 } 
  9.             } 
  10.         } 
  11.         console.log(arr); 

3、先使用sort()方法对数组进行排序,再比较看数组是否和相邻的项相等,如果不同则存入新数组中

  1. // 先对数组进行sort排序 
  2.  var sortArr = arr.sort(); 
  3. // 初始化结果数组并存一个值 
  4.             var res = [sortArr[0]]; 
  5. // 循环遍历数组进行比较 
  6.             for (var i = 1; i < sortArr.length; i++) { 
  7. // 如果当前的比较项与结果数组的最后一项不相等则放入 
  8.                 if (sortArr[i] !== res[res.length - 1]) { 
  9.                     res.push(sortArr[i]); 
  10.                 } 
  11.             } 
  12.             console.log(res); 

 

文章“【Web前端基础知识】数组去重的方法”已帮助

更多内容

>>本文地址:https://www.ujiuye.com/zhuanye/2021/69054.html

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

1 您的年龄

2 您的学历

3 您更想做哪个方向的工作?

获取测试结果
  • 大前端大前端
  • 大数据大数据
  • 互联网营销互联网营销
  • JavaJava
  • Linux云计算Linux
  • Python+人工智能Python
  • 嵌入式物联网嵌入式
  • 全域电商运营全域电商运营
  • 软件测试软件测试
  • 室内设计室内设计
  • 平面设计平面设计
  • 电商设计电商设计
  • 网页设计网页设计
  • 全链路UI/UE设计UI设计
  • VR/AR游戏开发VR/AR
  • 网络安全网络安全
  • 新媒体与短视频运营新媒体
  • 直播带货直播带货
  • 智能机器人软件开发智能机器人
 

快速通道fast track

近期开班时间TIME