【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);

THE END  

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

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部