广告位联系
返回顶部
分享到

js数组去重常见的方法汇总(7种)

JavaScript 来源:互联网 作者:佚名 发布时间:2022-09-01 21:30:37 人浏览
摘要

1、借助ES6提供的Set结构 new Set() 简单好用 强烈推荐 直接给一个新的数组里面,利用es6的延展运算符 1 2 3 4 5 6 7 8 9 var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22]; console.log(arr); function noRepeat(a

1、借助ES6提供的Set结构 new Set() 简单好用 强烈推荐

直接给一个新的数组里面,利用es6的延展运算符

1

2

3

4

5

6

7

8

9

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

 console.log(arr);  

 function noRepeat(arr){

   var newArr = [...new Set(arr)]; //利用了Set结构不能接收重复数据的特点

   return newArr

 }

 

 var arr2 = noRepeat(arr)

 console.log(arr2);

2、利用 filter() 去重

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。item是当前元素的值,index是当前元素的索引值。indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。利用indexOf() 查询到数组的下标,看是否等于当前的下标,相等的话就返回,否则不返回值。

1

2

3

4

5

6

7

8

var arr = ['apple','apps','pear','apple','orange','apps'];

  

console.log(arr)   

  var newArr = arr.filter(function(item,index){

     return arr.indexOf(item) === index;  // 因为indexOf 只能查找到第一个 

  });

  

console.log(newArr);

3、利用for 循环 搭配 indexOf 去重

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

function noRepeat(arr) {

       //定义一个新的临时数组

       var newArr=[];

       //遍历当前数组

       for(var i=0;i<arr.length;i++) {

         //如果当前数组的第i已经保存进了临时数组,那么跳过,

         //否则把当前项push到临时数组里面

         if(newArr.indexOf(arr[i]) === -1) {  //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1

            newArr.push(arr[i]);

         }

       }

   return newArr

 }

 var arr2 = noRepeat(arr);

 console.log(arr2);

4、将数组的每一个元素依次与其他元素做比较,发现重复元素,删除 比较繁琐 不推荐

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

console.log(arr);   

function noRepeat(arr) {

       for(var i = 0; i < arr.length-1; i++){

           for(var j = i+1; j < arr.length; j++){

               if(arr[i]===arr[j]){

                   arr.splice(j,1);

                   j--;

               }

           }

       }

       return arr;

}

var arr2 = noRepeat(arr);

console.log(arr2);

5、借助新数组 通过 indexOf 方法判断当前元素在数组中的索引,如果与循环的下标相等则添加到新数组中

1

2

3

4

5

6

7

8

9

10

11

12

13

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

   console.log(arr)   

   function noRepeat(arr) {

       var newArr = [];

       for (var i = 0; i < arr.length; i++) {

           if (arr.indexOf(arr[i]) == i) {

             newArr.push(arr[i]);

           }

       }

       return newArr;

   }

  var arr2 = noRepeat(arr);

  console.log(arr2);

6、利用双重for循环

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

console.log(arr);   

function noRepeat(arr){

   for (var i = 0; i < arr.length; i++) {

       for (var j = 0; j < arr.length; j++) {

           if (arr[i] == arr[j] && i != j) { //将后面重复的数删掉

              arr.splice(j, 1);

            }

       }

    }

    return arr;

}

var arr2  = noRepeat(arr);

console.log(arr2);

7、利用includes实现数组去重

1

2

3

4

5

6

7

8

9

10

11

var arr = [1,9,8,8,7,2,5,3,3,3,2,3,1,4,5,444,55,22];

   function noRepeat(arr) {

     let newArr = [];

     for(i=0; i<arr.length; i++){

       if(!newArr.includes(arr[i])){

           newArr.push(arr[i])

       }

     }

    return newArr

  }

console.log(noRepeat(arr));

以上就是比较常用的七种方法了


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/Lguorong/article/details/124301325
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计