數組去重,簡短而有效的方法

<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>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章