资讯专栏INFORMATION COLUMN

数组去重方法小结

张巨伟 / 3608人阅读

摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。利用将结构转换成数组拓展运算符内部使用循环方法思路方法将传入的数组或非数组值与原数组合并组成一个新的数组并返回。

1.最基本的去重方法

思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。

</>复制代码

  1. function unique(arr){

      var res = [arr[0]];

  2.   for(var i=1;i

  3.     var repeat = false;

  4.     for(var j=0;j

  5.       if(arr[i] == res[j]){

  6.         repeat = true;

  7.         break;

  8.       }

  9.     }

  10.     if(!repeat){

  11.       res.push(arr[i]);

  12.     }

  13.   }

  14.   return res;

  15. }

2.先排序在去重

思路:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组

</>复制代码

  1. function unique(arr){

      var arr2 = arr.sort();

  2.   var res = [arr2[0]];

  3.   for(var i=1;i

  4.     if(arr2[i] !== res[res.length-1]){

  5.       res.push(arr2[i]);

  6.     }

  7.   }

  8.   return res;

  9. }

3.利用对象的属性去重(推荐)

思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复

</>复制代码

  1. function unique(arr){

      var res =[];

  2.   var json = {};

  3.   for(var i=0;i

  4.     if(!json[arr[i]]){

  5.       res.push(arr[i]);

  6.       json[arr[i]] = 1;

  7.     }

  8.   }

  9.   return res;

  10. }

4.利用下标查询

</>复制代码

  1. function unique(arr){
      var newArr = [arr[0]];
       for(var i=1;i    if(newArr.indexOf(arr[i]) == -1){

  2. </>复制代码

    1.    newArr.push(arr[i]);
    2.    }
    3. }
    4. return newArr; }

5.利用es6

Set数据结构,它类似于数组,其成员的值都是唯一的。 利用Array.from将Set结构转换成数组

function dedupe(array){ return Array.from(new Set(array)); }
dedupe([1,1,2,3]) //[1,2,3] 拓展运算符(...)内部使用for...of循环

let arr = [1,2,3,3]; let resultarr = [...new Set(arr)];
console.log(resultarr); //[1,2,3]

6.concat()方法

思路:concat() 方法将传入的数组或非数组值与原数组合并,组成一个新的数组并返回。该方法会产生一个新的数组。

function concatArr(arr1, arr2){
var arr = arr1.concat(arr2);
arr = unique1(arr);//再引用上面的任意一个去重方法
return arr;
}

7.Array.prototype.push.apply()

思路:该方法优点是不会产生一个新的数组。

</>复制代码

  1. var a = [1, 2, 3]; var b = [4, 5, 6]; Array.prototype.push.apply(a,
    b);
    //a=[1,2,3,4,5,6] //等效于:a.push.apply(a, b); //也等效于[].push.apply(a,
    b);
    function concatArray(arr1,arr2){
    Array.prototype.push.apply(arr1, arr2);
    arr1 = unique1(arr1);
    return arr1;
    }

8.arr.filter()

</>复制代码

  1. var arr = [0,0,1,"a",1,2,"b","a","a"];
  2. var res = arr.filter(function(ele,index,array){
  3. return index === array.indexOf(ele);
  4. });
  5. document.write(res);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108129.html

相关文章

  • JS数组去重方法小结

    摘要:数组去重看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。还有就是方法返回的数组也是排序后的数组,某些情况下可能不符合要求。 JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用spli...

    PascalXie 评论0 收藏0
  • 数组去重方法小结

    摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。利用将结构转换成数组拓展运算符内部使用循环方法思路方法将传入的数组或非数组值与原数组合并组成一个新的数组并返回。 1.最基本的去重方法 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。 function u...

    williamwen1986 评论0 收藏0
  • 数组去重方法小结

    摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。利用将结构转换成数组拓展运算符内部使用循环方法思路方法将传入的数组或非数组值与原数组合并组成一个新的数组并返回。 1.最基本的去重方法 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。 function u...

    testHs 评论0 收藏0
  • 去重方法小结

    摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。再引用上面的任意一个去重方法思路该方法优点是不会产生一个新的数组。 1.最基本的去重方法 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。 function unique(arr){   var res ...

    yanest 评论0 收藏0
  • 去重方法小结

    摘要:最基本的去重方法思路定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。再引用上面的任意一个去重方法思路该方法优点是不会产生一个新的数组。 1.最基本的去重方法 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。 function unique(arr){   var res ...

    n7then 评论0 收藏0

发表评论

0条评论

张巨伟

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<