1. 程式人生 > >陣列去重,簡短而有效的方法

陣列去重,簡短而有效的方法

<script type="text/javascript">
      var arr = [1,2,3,4,5,6,7,8,1,2,3,4,5,12,13,14,15];

      /*
      js物件裡沒有重複的key,所以可以通過以下方法來解決陣列去重
      1.把陣列轉換成物件
      2.把值變成物件中的key
      3.再把物件還原成陣列
      */

      //把陣列轉換成物件
      function toObject(arr){
        var obj = {};
        var j;
        for(var i=0, j=arr.length; i<j; i++){
          //把之變成物件中的key
          obj[arr[i]] = true;
        }
        return obj;
      }

      //把物件還原成陣列
      function toKey(obj){
        var a = [];
        for(var arr in obj){
          //hasOwnProperty:用於檢測給定的屬性在當前物件例項中(而不是原型中)是否存在
          if (obj.hasOwnProperty(arr)) {  //YUI底層程式碼
            a.push(arr);
          }
        }
        return a;
      }

      //綜合方法
      function toArr(newArr){
        return toKey(toObject(newArr));
      }

      console.log(toArr(arr));
    </script>