亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript數(shù)組去重的幾種方法效率測試

 更新時間:2016年10月23日 16:39:41   作者:夜雨羽翼  
JavaScript數(shù)組去重是前端面試酷愛的問題,問題簡單而又能看出程序員對計算機程序執(zhí)行過程的理解如何。數(shù)組去重的方法有很多,到底哪種是最理想的我不清楚。于是我測試了下數(shù)組去重的效率。測試二十萬個數(shù)據(jù),隨著數(shù)據(jù)越多效率很明顯的就體驗了出來。下面來一起看看吧。

以下是我針對網(wǎng)上三種高效率方法總結(jié)與效率測試,如果大家有更好的意見或建議也可以提出,大家共勉學習。

數(shù)組去重法1:

Array.prototype.unique1 = function(){
 console.time("數(shù)組去重法1");   //記錄開始執(zhí)行的時間
 var arr = [];    //創(chuàng)建一個臨時數(shù)組
 var obj = {};   //創(chuàng)建一個空對象
 for(var i = 0; i < this.length; i++){   //遍歷當前要去重的數(shù)組
  if(!obj[this[i]]){   //判斷obj對象中是否存有當前項,沒有則執(zhí)行
   arr.push(this[i]);   //將當前項push到臨時數(shù)組中
   obj[this[i]] = 1;   //將當前項存入obj對象
  }
 }
 console.timeEnd("數(shù)組去重法1");   //記錄結(jié)束執(zhí)行的時間
 return arr;
}

數(shù)組去重法2:

Array.prototype.unique2 = function(){
 console.time("數(shù)組去重法2"); //記錄開始執(zhí)行的時間
 var arr = [];  //創(chuàng)建一個臨時數(shù)組
 for(var i = 0; i < this.length; i++){  //遍歷當前要去重的數(shù)組
  if(arr.indexOf(this[i]) == -1){  //判斷臨時數(shù)組中是否存有當前項,沒有則執(zhí)行
   arr.push(this[i]); //將當前項push到臨時數(shù)組中
  }
 }
 console.timeEnd("數(shù)組去重法2"); //記錄結(jié)束執(zhí)行的時間
 return arr;
}

數(shù)組去重法3:

Array.prototype.unique3 = function(){
 console.time("數(shù)組去重法3"); //記錄開始執(zhí)行的時間
 var arr = [this[0]]; //創(chuàng)建一個臨時數(shù)組,并將要去重數(shù)組的第一項存入臨時數(shù)組
 for(var i = 1; i < this.length; i++) { //從要去重數(shù)組第二項開始遍歷
  if (this.indexOf(this[i]) == i){ //判斷臨時數(shù)組中是否存有當前項,沒有則執(zhí)行
   arr.push(this[i]); //將當前項push到臨時數(shù)組中
  }
 }
 console.timeEnd("數(shù)組去重法3"); //記錄結(jié)束執(zhí)行的時間
 return arr;
}

效率測試方法:

var arr1 = []; //創(chuàng)建一個要去重的數(shù)組
for(var i = 0; i < 200000; i++){ //遍歷200000個數(shù)據(jù)
 arr1.push(parseInt(Math.random() * 10) + 1); //將所有數(shù)據(jù)返回為隨機數(shù)(1-10之間)的數(shù), 并push到要去重的數(shù)組中
}

console.log(arr1.unique1()); //打印數(shù)組去重法1的執(zhí)行時間
console.log(arr1.unique2()); //打印數(shù)組去重法2的執(zhí)行時間
console.log(arr1.unique3()); //打印數(shù)組去重法3的執(zhí)行時間

效率測試結(jié)果:

總結(jié)

以上就是關于JavaScript幾種數(shù)組去重的方法效率測試,希望測試的結(jié)果對大家選擇使用數(shù)組去重方法能有所幫助,如果有疑問大家可以留言交流。謝謝大家對腳本之家的支持。

相關文章

  • js表單驗證實例講解

    js表單驗證實例講解

    這篇文章主要為大家詳細介紹了js表單驗證,JavaScript 可用來在數(shù)據(jù)被送往服務器前對HTML 表單中的這些輸入數(shù)據(jù)進行驗證,感興趣的小伙伴們可以參考一下
    2016-03-03
  • JS實現(xiàn)至少包含字母、大小寫數(shù)字、字符的密碼等級的兩種方法

    JS實現(xiàn)至少包含字母、大小寫數(shù)字、字符的密碼等級的兩種方法

    這篇文章主要介紹了JS實現(xiàn)至少包含字母、大小寫數(shù)字、字符的密碼等級的兩種方法,可實現(xiàn)有效檢測用戶密碼等級的功能,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • javascript 動態(tài)生成css代碼的兩種方法

    javascript 動態(tài)生成css代碼的兩種方法

    這篇文章主要介紹了javascript 動態(tài)生成css代碼的兩種方法,有時候我們需要利用js來動態(tài)生成頁面上style標簽中的css代碼,下面就給大家介紹兩種方法,需要的朋友可以參考下
    2017-03-03
  • 微信小程序使用slider設置數(shù)據(jù)值及switch開關組件功能【附源碼下載】

    微信小程序使用slider設置數(shù)據(jù)值及switch開關組件功能【附源碼下載】

    這篇文章主要介紹了微信小程序使用slider設置數(shù)據(jù)值及switch開關組件功能,結(jié)合實例形式分析了slider組件及switch組件的功能與使用方法,并附帶源碼供讀者下載參考,需要的朋友可以參考下
    2017-12-12
  • javascript實現(xiàn)固定側(cè)邊欄

    javascript實現(xiàn)固定側(cè)邊欄

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)固定側(cè)邊欄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 小程序?qū)崿F(xiàn)按下錄音松開識別語音

    小程序?qū)崿F(xiàn)按下錄音松開識別語音

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)按下錄音松開識別語音,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 詳解JavaScript中Proxy與Object.defineProperty的區(qū)別

    詳解JavaScript中Proxy與Object.defineProperty的區(qū)別

    Proxy和Object.defineProperty都是JavaScript中用于實現(xiàn)對象屬性攔截和代理的機制,但它們在功能和應用方面有一些區(qū)別,本文通過代碼示例詳細介紹了二者的區(qū)別,感興趣的朋友可以參考下
    2023-06-06
  • bootstrapValidator自定驗證方法寫法

    bootstrapValidator自定驗證方法寫法

    這篇文章主要為大家詳細介紹了bootstrapValidator自定驗證方法寫法,研究bootstrapValidator驗證,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • 深入理解JavaScript系列(46):代碼復用模式(推薦篇)詳解

    深入理解JavaScript系列(46):代碼復用模式(推薦篇)詳解

    這篇文章主要介紹了深入理解JavaScript系列(46):代碼復用模式(推薦篇)詳解,本文講解了原型繼承、復制所有屬性進行繼承、混合(mix-in)、借用方法等模式,需要的朋友可以參考下
    2015-03-03
  • JavaScript 格式化金額常見方法

    JavaScript 格式化金額常見方法

    這篇文章主要介紹了JavaScript 格式化金額最常見方法,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05

最新評論