国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript數組去重的3種方法和代碼實例

2019-11-20 12:07:54
字體:
來源:轉載
供稿:網友

數組去重的方法有很多,到底哪種是最理想的,自己不清楚。于是自己測試了下數組去重的效果和性能。測試十萬個數據,代碼和所耗大概時間如下。

  到底采用哪種方法,根據實際情況而定吧。

/*方法一: 1,'1' 會被認為是相同的; 所有hash對象,如:{x;1},{y:1}會被認為是相同的 //10ms */Array.prototype.unique=function(){  var newArr=[],obj={};  for(var i=0,len=this.length;i<len;i++){    if(!obj[this[i]]){       newArr.push(this[i]);      obj[this[i]]=true;    }  }  return newArr;}/*方法一改進版:所有hash對象,如:{x;1},{y:1}會被認為是相同的 //30ms*/Array.prototype.unique=function(){  var newArr=[],obj={};  for(var i=0,len=this.length;i<len;i++){    if(!obj[typeof(this[i])+this[i]]){       newArr.push(this[i]);      obj[typeof(this[i])+this[i]]=this[i];    }  }  return newArr;}/*方法二: 去重結果最好,但耗性能   //250ms*/Array.prototype.unique=function(){  var newArr=this.concat();  for(var i=0,len=newArr.length;i<len;i++) {    for(var j=i+1,len=newArr.length;j<len;j++) {      //注意 ===      if(newArr[i]===newArr[j]) {        newArr.splice(j,1);        j--;      }    }  }  return newArr;}/*方法三: 不能去重hash對象 //25ms */Array.prototype.unique = function(){  var newArr = []; //一個新的臨時數組  for(var i = 0,len=this.length; i < len; i++){        if (newArr.indexOf(this[i]) == -1){  //如果當前數組的第i已經保存進了臨時數組,那么跳過,否則把當前項push到臨時數組里面      newArr.push(this[i]);    }  }  return newArr;}var arr0=[11,21,221,13,24,"134","1",{x:1,y:1},{name:"pobaby",age:"12",hobby:"football"},{name:"pobaby1",age:"121",hobby:"football1"},{x:134},{y:132},{x:143},{y:3421},"神秘人物", "火柴人技巧格斗", "超音速戰場", "小小辛打磚塊", "火柴人技巧格斗", "加菲貓超人", "小小辛打磚塊", "卑鄙的我2", "電流導線", "飛天手推車","神D秘人物", "火柴人S技巧格斗", "超音SD速戰場", "小小SD辛打磚塊", "火柴人SD技巧格斗", "加菲S貓超人", "小小DF辛打磚塊", "卑鄙的FS我2", "電D流導線", "飛天SD手推車","神秘SD人物", "火柴人技D巧格斗", "超音ASD速戰場", "小小辛打SAD磚塊", "火柴人技SD巧格斗", "加菲FDS貓超人", "小小辛打SDF磚塊", "卑鄙SDF的我2", "電流SDF導線", "飛天手DF推車","神秘SD人物", "火柴人技AS巧格斗", "超音速戰FS場", "小小辛SDF打磚塊", "火柴人SDF技巧格斗", "加菲SD貓超人",113,231,2221,123,234,"1334","21",{x:13,y:132},{name:"pobaby2",age:"122",hobby:"football2"},{name:"pobaby13",age:"1231",hobby:"football41"},{x:13544},{y:1352},{x:14543},{y:34521},"神秘人sd物", "火柴人技sd巧格斗", "超音速sd戰場", "小小辛sd打磚塊", "火柴人技巧gw格斗", "加菲貓ui超人", "小小辛yi打磚塊", "卑鄙的yi我2", "電流yt導線", "飛天手ytui推車","神Dyu秘人物", "火yui柴人S技yui巧格斗", "超音SDyu速戰場", "小小SD辛打磚uyi塊", "火柴yui人SD技巧格斗", "加yui菲S貓超人", "小小DF辛打磚ui塊", "卑鄙uyi的FS我2", "電D流導yui線", "飛天SD手推uyi車","神i秘SD人物", "火柴人技Dhk巧格斗", "超音ASD速戰hk場", "小小辛打SAhkD磚塊", "火柴人技SD巧ghk格斗", "加菲FDS貓k超人", "小小辛打SDF磚ytui塊", "卑鄙SDF的yui我2", "電流SDyuF導線", "飛天手yuiDF推車","神iy秘SD人hk物", "火柴uyi人技AS巧格hk斗", "超音hg速戰FS場", "小小辛SDF打磚hjk塊", "火柴人SDF技hj巧格斗", "加菲SDhk貓超人" ];/*十萬個隨機數據*/var arr=[],num;for(var i = 0; i < 100000; i++){  num=Math.floor(Math.random()*50);  arr.push(arr0[num]);}var t1= new Date().getTime(); console.log(t1); //開始時間arr.unique(); //去重var t2 = new Date().getTime(); console.log(t2); //結束時間console.log(t2-t1);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贡嘎县| 岐山县| 静安区| 密山市| 凌云县| 依安县| 永州市| 古蔺县| 石楼县| 资溪县| 株洲市| 霍城县| 炉霍县| 毕节市| 华蓥市| 罗田县| 竹溪县| 恭城| 新龙县| 安达市| 共和县| 新乡市| 太保市| 涟源市| 丰原市| 新安县| 肥城市| 仁布县| 山西省| 固始县| 日照市| 勃利县| 石景山区| 禹城市| 泉州市| 交口县| 喜德县| 开远市| 康马县| 桑植县| 洛隆县|