最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

數(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++){   //遍歷當(dāng)前要去重的數(shù)組
  if(!obj[this[i]]){   //判斷obj對象中是否存有當(dāng)前項(xiàng),沒有則執(zhí)行
   arr.push(this[i]);   //將當(dāng)前項(xiàng)push到臨時數(shù)組中
   obj[this[i]] = 1;   //將當(dāng)前項(xiàng)存入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++){  //遍歷當(dāng)前要去重的數(shù)組
  if(arr.indexOf(this[i]) == -1){  //判斷臨時數(shù)組中是否存有當(dāng)前項(xiàng),沒有則執(zhí)行
   arr.push(this[i]); //將當(dāng)前項(xiàng)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ù)組的第一項(xiàng)存入臨時數(shù)組
 for(var i = 1; i < this.length; i++) { //從要去重數(shù)組第二項(xiàng)開始遍歷
  if (this.indexOf(this[i]) == i){ //判斷臨時數(shù)組中是否存有當(dāng)前項(xiàng),沒有則執(zhí)行
   arr.push(this[i]); //將當(dāng)前項(xiàng)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ù)返回為隨機(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é)

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

相關(guān)文章

  • 基于jsbarcode 生成條形碼并將生成的條碼保存至本地+源碼

    基于jsbarcode 生成條形碼并將生成的條碼保存至本地+源碼

    這篇文章主要介紹了基于jsbarcode 生成條形碼并將生成的條碼保存至本地,本文給大家提供最新源代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-04-04
  • 談?wù)劵趇frame、FormData、FileReader三種無刷新上傳文件的方法

    談?wù)劵趇frame、FormData、FileReader三種無刷新上傳文件的方法

    發(fā)請求有兩種方式,一種是用ajax,另一種是用form提交,默認(rèn)的form提交如果不做處理的話,會使頁面重定向。本篇文章通過實(shí)例給大家介紹基于iframe/FormData/FileReader三種無刷新上傳文件的方法,感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • OpenLayers3實(shí)現(xiàn)測量功能

    OpenLayers3實(shí)現(xiàn)測量功能

    這篇文章主要為大家詳細(xì)介紹了OpenLayers3實(shí)現(xiàn)測量功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • JS數(shù)字千分位格式化實(shí)現(xiàn)方法總結(jié)

    JS數(shù)字千分位格式化實(shí)現(xiàn)方法總結(jié)

    這篇文章主要介紹了JS數(shù)字千分位格式化實(shí)現(xiàn)方法,結(jié)合實(shí)例形式總結(jié)分析了JS實(shí)現(xiàn)數(shù)字千分位格式化的常用技巧,包括字符串的分割、拼接、遍歷及正則操作等相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • webpack4之如何編寫loader的方法步驟

    webpack4之如何編寫loader的方法步驟

    這篇文章主要介紹了webpack4之如何編寫loader,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • JavaScript中關(guān)于e.keycode的使用

    JavaScript中關(guān)于e.keycode的使用

    這篇文章主要介紹了JavaScript中關(guān)于e.keycode的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Ant Design Pro 下實(shí)現(xiàn)文件下載的實(shí)現(xiàn)代碼

    Ant Design Pro 下實(shí)現(xiàn)文件下載的實(shí)現(xiàn)代碼

    這篇文章主要介紹了Ant Design Pro 下實(shí)現(xiàn)文件下載的實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • JS document內(nèi)容及樣式操作完整示例

    JS document內(nèi)容及樣式操作完整示例

    這篇文章主要介紹了JS document內(nèi)容及樣式操作,結(jié)合完整實(shí)例形式分析了JavaScript document內(nèi)容及樣式的獲取、修改、添加等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Ionic默認(rèn)的Tabs模板使用實(shí)例

    Ionic默認(rèn)的Tabs模板使用實(shí)例

    這篇文章主要為大家詳細(xì)介紹了Ionic默認(rèn)的Tabs模板使用實(shí)例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • js表單中選擇框值的獲取及表單的序列化

    js表單中選擇框值的獲取及表單的序列化

    這篇文章主要介紹了js表單中選擇框值的獲取及表單的序列化,學(xué)習(xí)表單中單選、多選、選擇框值的獲取,需要的朋友可以參考下
    2015-12-12

最新評論

黔南| 双牌县| 尉犁县| 鄂托克旗| 多伦县| 怀宁县| 河东区| 游戏| 昌宁县| 靖宇县| 宁乡县| 济宁市| 嘉荫县| 临潭县| 凤城市| 墨竹工卡县| 云浮市| 临猗县| 孙吴县| 明溪县| 乾安县| 阜宁县| 雅江县| 宽城| 济阳县| 道真| 梨树县| 萝北县| 封开县| 永新县| 原阳县| 大关县| 沙坪坝区| 黄冈市| 奎屯市| 旌德县| 绥德县| 璧山县| 旺苍县| 千阳县| 论坛|