美文网首页
JavaScript数组去重(含ES6方法)

JavaScript数组去重(含ES6方法)

作者: 圆小鑫鑫 | 来源:发表于2018-06-25 10:16 被阅读0次

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

    var arr1=[1,2,3,2,1];
    function unique1(arr){
      var res = [arr1[0]];
      for(var i=1;i<arr1.length;i++){
        var repeat = false;
        for(var j=0;j<res.length;j++){
          if(arr1[i] == res[j]){
            repeat = true;
            break;
          }
        }
        if(!repeat){
          res.push(arr1[i]);
        }
      }
      return res;
    }
    console.log(unique1(arr1));
    

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

    var arr2=[1,2,3,2,1];
    function unique2(arr){
      var arr2 = arr.sort();
      var res = [arr2[0]];
      for(var i=1;i<arr2.length;i++){
        if(arr2[i] !== res[res.length-1]){
          res.push(arr2[i]);
        }
      }
      return res;
    }
    console.log(unique2(arr2));
    

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

    var arr3=[1,2,3,4,5,4,3,2,1];
    function unique3(arr3){
      var res =[];
      var json = {};
      for(var i=0;i<arr3.length;i++){
        if(!json[arr3[i]]){
          res.push(arr3[i]);
          json[arr3[i]] = 1;
        }
      }
      return res;
    }
    console.log(unique3(arr3));
    

    利用下标查询

    var arr4=[1,2,3,4,5,4,3,2,1];
      function unique4(arr){
      var newArr = [arr4[0]];
       for(var i=1;i<arr4.length;i++){
        if(newArr.indexOf(arr4[i]) == -1){
             newArr.push(arr4[i]);
        }
        }
        return newArr;
    }
    console.log(unique4(arr4));  
    

    ES6的方法

    let arr1=([1,1,2,3]);
    let newArr1=Array.from(new Set(arr1));
    console.log(newArr1);
    
    let arr2 = [1,2,3,3];
    let newArr2 = [...new Set(arr2)]; 
    console.log(newArr2); 
    
    let arr3 = [1, 2, 3, 2, 1];
    function newArr3(arr3){
        return Array.from(new Set(arr3));
    }
    console.log(newArr3(arr3));
    

    相关文章

      网友评论

          本文标题:JavaScript数组去重(含ES6方法)

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