美文网首页
数组去重

数组去重

作者: 得得哎 | 来源:发表于2018-03-27 16:58 被阅读0次
(1)方法一

①利用es6中set容器的特点:set容器是无序不可重复的多个value的集合体,将数组作为参数传入会自动去重
②循环遍历 for(let value of target){},可遍历数组,set容器,map容器,字符串,伪数组

    let arr = [1,2,3,3,4,4,5,6,6,7]
    let arr1 = arr;
    arr = [];
    let set2 = new Set(arr1);
    for(let i of set2){
      arr.push(i);
    }
    console.log(arr);// [1, 2, 3, 4, 5, 6, 7]
(2)方法二

Array.from(v) : 将伪数组对象或可遍历对象转换为真数组

    let arr = [3,3,4,5,6,1,3,5,5,6,1]
    arr = Array.from(new Set(arr));
    console.log(arr);// [3, 4, 5, 6, 1]
(3)方法三

三点运算符内部使用for...of循环

    let arr = [3,3,4,5,6,1,3,5,5,6,1]
    let arr1 = [...new Set(arr)];
    console.log(arr1); //[3, 4, 5, 6, 1]
(4)方法四

reduce函数的特点

let arr = [1,2,3,4,4,1]
let arr1 = arr.reduce((pre,cur)=>{
    if(!pre.includes(cur)){
      return pre.concat(cur)
    }else{
      return pre
    }
},[])
console.log(arr1);// [1, 2, 3, 4]
(5) 方法五

该方法取每一项和剩下的作对比,如果剩下的数组存在此项,则删除该项(或变成null再删除数组中值为null的项[代码内注释①]
使用的数组方法:
① arrayObject.slice(start,end:可不传) ,返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素,该方法并不会修改数组,而是返回一个子数组。。
② arrayObject.splice(index,howmany,item1,.....,itemX),方法向/从数组中添加/删除项目,然后返回被删除的项目,该方法会改变原数组。

let arr = [3,3,4,5,6,1,3,5,5,6,1]
for(let i = 0;i<arr.length-1;i++){
   let item = arr[i],
        args = arr.slice(i+1)
   if(args.includes(item)){
        //① arr[i] = null
        arr.splice(i,1)
        i--
   }
}
 //① arr = arr.filter(item => item!=null)
console.log(arr)// [4, 3, 5, 6, 1]
(6)方法六

该方法是方法五的修改版,思路是取每一项和剩下的作对比,如果剩下的数组存在此项,则将数组最后一项与他替换

let arr = [3,3,4,5,6,1,3,5,5,6,1]
        for(let i = 0;i<arr.length;i++){
            let item = arr[i],
                args = arr.slice(i+1)
                if(args.includes(item)){
                    arr[i] = arr[arr.length-1]
                    arr.length--
                    i--
                }
        }
        console.log(arr)
(7)方法七

就是简单的循环套循环遍历对比

 function way1(arr){
        var arr1 = [arr[0]];
        for(var i = 1;i<arr.length;i++){
            var repeat = false;
            for(var j = 0;j<arr1.length;j++){
                if(arr[i] === arr1[j]){
                    repeat = true;
                    break;
                }
            }
            if(!repeat){
                arr1.push(arr[i])
            }
        }
        return arr1;
    }
(8)方法八

先排序,取出新的值与相邻的值进行对比

function way2(arr){
        var arr2 = arr.sort();
        var arr3 = [arr2[0]];
        for(var i=1; i<arr2.length; i++){
            if(arr2[i] !== arr3[arr3.length-1]){
                arr3.push(arr2[i]);
            }
        }
        return arr3;
        
    }
(9)方法九

利用json对象的特点

function way3(arr){
        var obj = {},
            arr1 = [];
        for(var i = 0;i < arr.length;i++){
            if(!obj[arr[i]]){
                obj[arr[i]] = 1;
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }
(10)方法十

利用数组的indexOf方法,调用时,若参数在该数组中存在,则返回该参数在数组中的下标位置。
注:此处参数与数组中的元素对比,严格采用“===”进行对比,即不做隐式的数据类型转换

function way4(arr){
        var arr1 = [];
        for(var i=0; i<arr.length; i++){    
            if(arr1.indexOf(arr[i]) == -1){
                arr1.push(arr[i]);
            }
        }
        return arr1;
    }

相关文章

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • javascript数组去重,数组对象去重

    利用Reduce去重 function unique(arr) {var obj = {};arr = arr.r...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • js reduce去重用法

    reduce不仅仅可以数据累加,还可以实现去重效果。 重复次数计算 数组去重 数组对象去重,转为数组 对象去重

  • 数组去重

    传统方法 ES6 扩展 传统方法 最后再写到 Array.prototype 原型中

  • 数组去重

    老题了。。虽然网上一搜一大堆,还是自己想了想,自己动笔写了几种。

网友评论

      本文标题:数组去重

      本文链接:https://www.haomeiwen.com/subject/cssjcftx.html