数组去重

(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 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
(7)方法七

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

 function way1(arr){
        var arr1 = [arr[0]];
        for(var i = 1;i
(8)方法八

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

function way2(arr){
        var arr2 = arr.sort();
        var arr3 = [arr2[0]];
        for(var i=1; i
(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

你可能感兴趣的:(数组去重)