欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript數(shù)組去重的3種方法和代碼實例

 更新時間:2015年07月01日 10:56:54   投稿:junjie  
這篇文章主要介紹了JavaScript數(shù)組去重的3種方法和代碼實例,本文直接給出實例代碼,需要的朋友可以參考下

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

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

/*方法一: 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 = []; //一個新的臨時數(shù)組
  for(var i = 0,len=this.length; i < len; i++){    
    if (newArr.indexOf(this[i]) == -1){  //如果當前數(shù)組的第i已經保存進了臨時數(shù)組,那么跳過,否則把當前項push到臨時數(shù)組里面
      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},"神秘人物", "火柴人技巧格斗", "超音速戰(zhàn)場", "小小辛打磚塊", "火柴人技巧格斗", "加菲貓超人", "小小辛打磚塊", "卑鄙的我2", "電流導線", "飛天手推車","神D秘人物", "火柴人S技巧格斗", "超音SD速戰(zhàn)場", "小小SD辛打磚塊", "火柴人SD技巧格斗", "加菲S貓超人", "小小DF辛打磚塊", "卑鄙的FS我2", "電D流導線", "飛天SD手推車","神秘SD人物", "火柴人技D巧格斗", "超音ASD速戰(zhàn)場", "小小辛打SAD磚塊", "火柴人技SD巧格斗", "加菲FDS貓超人", "小小辛打SDF磚塊", "卑鄙SDF的我2", "電流SDF導線", "飛天手DF推車","神秘SD人物", "火柴人技AS巧格斗", "超音速戰(zhàn)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戰(zhàn)場", "小小辛sd打磚塊", "火柴人技巧gw格斗", "加菲貓ui超人", "小小辛yi打磚塊", "卑鄙的yi我2", "電流yt導線", "飛天手ytui推車","神Dyu秘人物", "火yui柴人S技yui巧格斗", "超音SDyu速戰(zhàn)場", "小小SD辛打磚uyi塊", "火柴yui人SD技巧格斗", "加yui菲S貓超人", "小小DF辛打磚ui塊", "卑鄙uyi的FS我2", "電D流導yui線", "飛天SD手推uyi車","神i秘SD人物", "火柴人技Dhk巧格斗", "超音ASD速戰(zhàn)hk場", "小小辛打SAhkD磚塊", "火柴人技SD巧ghk格斗", "加菲FDS貓k超人", "小小辛打SDF磚ytui塊", "卑鄙SDF的yui我2", "電流SDyuF導線", "飛天手yuiDF推車","神iy秘SD人hk物", "火柴uyi人技AS巧格hk斗", "超音hg速戰(zhàn)FS場", "小小辛SDF打磚hjk塊", "火柴人SDF技hj巧格斗", "加菲SDhk貓超人" ];

/*十萬個隨機數(shù)據(jù)*/
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);

相關文章

  • JavaScript面向對象編程實現(xiàn)模擬

    JavaScript面向對象編程實現(xiàn)模擬

    面向對象編程(Object Oriented Programming)將現(xiàn)實世界中的復雜關系抽象成一個個對象,通過對象之間的分工合作對現(xiàn)實世界進行模擬
    2022-10-10
  • JavaScript實現(xiàn)班級抽簽小程序

    JavaScript實現(xiàn)班級抽簽小程序

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)班級抽簽小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • js如何查找json數(shù)據(jù)中的最大值和最小值方法

    js如何查找json數(shù)據(jù)中的最大值和最小值方法

    這篇文章主要介紹了js如何查找json數(shù)據(jù)中的最大值和最小值方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • uniapp封裝axios的詳細過程(大可不必那么麻煩)

    uniapp封裝axios的詳細過程(大可不必那么麻煩)

    在uniapp中使用axios進行請求時,uniapp無法使用axios的適配器,下面這篇文章主要給大家介紹了關于uniapp封裝axios的詳細過程,需要的朋友可以參考下
    2022-10-10
  • JavaScript定義變量和變量優(yōu)先級問題探討

    JavaScript定義變量和變量優(yōu)先級問題探討

    這篇文章主要介紹了JavaScript定義變量和變量優(yōu)先級的問題探討,變量的定義還有這么講究嗎,不錯,看完本文相信你會有一定的收獲,需要的朋友可以參考下
    2014-10-10
  • js實現(xiàn)的早期滑動門菜單效果代碼

    js實現(xiàn)的早期滑動門菜單效果代碼

    這篇文章主要介紹了js實現(xiàn)的早期滑動門菜單效果代碼,涉及javascript數(shù)組遍歷及通過鼠標事件動態(tài)改變頁面元素屬性的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • JS FormData對象使用方法實例詳解

    JS FormData對象使用方法實例詳解

    這篇文章主要介紹了JS FormData對象使用方法,結合實例形式詳細分析了FormData對象的基本功能、原理及使用方法,需要的朋友可以參考下
    2020-02-02
  • 如何手動實現(xiàn)es5中的bind方法詳解

    如何手動實現(xiàn)es5中的bind方法詳解

    這篇文章主要給大家介紹了關于如何手動實現(xiàn)es5中的bind方法的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面小編來一起學習學習吧
    2018-12-12
  • JavaScript實現(xiàn)焦點進入文本框內關閉輸入法的核心代碼

    JavaScript實現(xiàn)焦點進入文本框內關閉輸入法的核心代碼

    這篇文章給大家分享js實現(xiàn)焦點進入文本框內關閉輸入法,代碼簡單易懂,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09
  • javascript EXCEL 操作類代碼

    javascript EXCEL 操作類代碼

    有空把JAVASCRIPT對EXCEL的操作進行了封裝,大家可以根據(jù)自己實際的需要在此基礎上進行擴充。詳細的請看代碼
    2009-07-07

最新評論