资讯专栏INFORMATION COLUMN

JS下的6种数组去重方式

red_bricks / 3058人阅读

摘要:当排序后目标数组的项不是新数组的最后一项时,说明不是重复项,推入新数组。给对象添加属性遍历对象属性方法五在上看到了这种针对数组中为纯数字时的排序去重方法。

方法一:
function deRepeated(arr){//传入要去重的目标数组
         var newArr=[];
         for(var i=0;i

方法二:
function deRepeated(arr){
        var newArr=[];
        for(var i=0;i

方法三:

      由于方法一和方法二都用到了ES5的indexOf()方法,有些浏览器可能不兼容。还可采用方法三:先对目标数组重排序,排序后重复项相邻,然后遍历目标数组。当排序后目标数组的项不是新数组的最后一项时,说明不是重复项,推入新数组。

function deRepeated(arr){
            var newArr=[];
            arr.sort();
            for(var i=0;i

注意点:由于涉及到直接比较数组的项,所以应采用不全等方式"!==";  
缺点:由于对目标数组进行先排序后去重,因此返回的也是排序后的新数组。

方法四:

      原理是遍历目标数组各项,保存为对象属性并统一给其设置属性值1,给重复的属性设置值时会覆盖原来的,然后遍历对象属性,由于返回的是字符串形式,应转为数字后再存入新数组。

function deRepeated(arr){
            var obj={},
                newArr=[];
            for(var i=0;i

方法五:  

      在stackoverflow上看到了这种针对数组中为纯数字时的排序去重方法。

function deRepeated(arr){
         arr.sort(function(a,b){  //对目标数组重排序,使有重复项的相邻
                  return a-b; 
         })
         var newArr=[arr[0]]; //第一项先放入新数组中
         for(var i=1;i

方法六:  

      利用ES6新增的对象内置类型Set,利用其元素不重复的特点,在实例内部实现自动去重。  

function deRepeated(arr){
         var set=new Set(arr);

         arr.splice(0);
         arr.push(...set); 
         return arr;   //返回原数组

         //return new Array(...set);   //返回新数组
}
var arr=[2,3,6,4,7,3,5,4,4,4];
console.log(deRepeated(arr));   //[2,3,6,4,7,5]

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

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

相关文章

  • JS进阶篇5---JS数组去重的n方式

    1、利用 indexOf() 方法之一 Array.prototype.unique = function(){ var temp = []; for (var i = 0;i < this.length;i++){ // 如果当前数组的第 i 项已经保存到了临时数组,那么跳过 if(temp.indexOf( this[i] ) == -1){ ...

    baihe 评论0 收藏0
  • JS实现数组去重方法总结(六方法)

    摘要:利用将结构转换成数组拓展运算符内部使用循环拓展,合并数组之后去重第种方法将传入的数组或非数组值与原数组合并组成一个新的数组并返回。该方法会产生一个新的数组再引用上面的任意一个去重方法第种。 1.第1种 双层循环,外层循环元素,内层循环时比较值,如果有相同的值则跳过,不相同则push进数组 Array.prototype.distinct = function(){ var arr =...

    Fourierr 评论0 收藏0
  • javascript 数组去重6思路

    摘要:但是这并不妨碍我们从思维拓展的角度出发,看看去重可以用几种思路去实现。首先是常规的双层循环比对的思路实现定义一个变量表示当前元素在中是否存在。依次对中的元素和原数组元素进行比对。重点是保证碰撞的几率小到比中大奖还小就可以了。 前端在日常开发中或多或少都会碰到有对数据去重的需求,实际上,像是lodash这些工具库已经有成熟完备的实现,并且可以成熟地运用于生产环境。但是这并不妨碍我们从思维...

    AlphaWallet 评论0 收藏0
  • JavaScript 实现数组更多的高阶函数

    摘要:实现数组更多的高阶函数吾辈的博客原文场景虽说人人平等,但有些人更加平等。若是有一篇适合萌新阅读的自己实现数组更多操作的文章,情况或许会发生一些变化。类似于的初始值,但它是一个函数,避免初始值在所有分组中进行累加。 JavaScript 实现数组更多的高阶函数 吾辈的博客原文: https://blog.rxliuli.com/p/fc... 场景 虽说人人平等,但有些人更加平等。 为...

    aervon 评论0 收藏0

发表评论

0条评论

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