数组去重,简短而有效的方法

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

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