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

淺談JS中的三種字符串連接方式及其性能比較

 更新時間:2016年09月02日 11:31:44   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談JS中的三種字符串連接方式及其性能比較。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

工作中經(jīng)常會碰到要把2個或多個字符串連接成一個字符串的問題,在JS中處理這類問題一般有三種方法,這里將它們一一列出順便也對它們的性能做個具體的比較。

第一種方法 用連接符“+”把要連接的字符串連起來:

str="a";
str+="b";

毫無疑問,這種方法是最便捷快速的,如果只連接100個以下的字符串建議用這種方法最方便。

第二種方法 以數(shù)組作為中介用 join 連接字符串:

var arr=new Array();
arr.push(a);
arr.push(b);
var str=arr.join("");

w3school 網(wǎng)站介紹說這種方法要比第一種消耗更少的資源,速度也更快,后面我們通過實驗再驗證是否是這樣。

第三種方法 利用對象屬性來連接字符串

function stringConnect(){
  this._str_=new Array();
}
stringConnect.prototype.append=function(a){
  this._str_.push(a);
}
stringConnect.prototype.toString=function(){
  return this._str_.join();
}
  var mystr=new stringConnect;
  mystr.append("a");
  var str=mystr.toString();

利用下面代碼對三種方法性能進(jìn)行比較,通過更改 c 的值來調(diào)整連接字符串的個數(shù):

var str="";
var d1,d2;
var c=5000;//連接字符串的個數(shù)


//------------------------測試第三種方法耗費時間-------
 d1=new Date();
function stringConnect(){
  this._str_=new Array();
}
stringConnect.prototype.append=function(a){
  this._str_.push(a);
}
stringConnect.prototype.toString=function(){
  return this._str_.join("");
}
  var mystr=new stringConnect;

  for(var i=0;i<c;i++){
    mystr.append("a");
  }
str=mystr.toString();
 d2=new Date();
 console.log(d2.getTime()-d1.getTime());
//-----------------------------------------------------

//------------------------測試第二種方法耗費時間-------
d1=new Date();
  var arr=new Array();
for(var i=0;i<c;i++){
  arr.push("a");
}
str=arr.join("");
  d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------

//------------------------測試第一種方法耗費時間-------
d1=new Date();for(var i=0;i<c;i++){
  str+="a";
}
d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------

我調(diào)整 c 分別等于5000、50000、500000、5000000,每個數(shù)值分別測了10次,最后結(jié)果如下:

c=5000
平均耗時(單位毫秒)
第三種 3 2 2 3 1 2 2 1 1 1 1.8
第二種 1 3 0 3 1 3 4 1 4 2 2.2
第一種 0 0 0 0 0 1 1 1 1 1 0.5

c=50000

第三種 22 12 9 14 12 13 13 13 10 17 13.5
第二種 8 13 12 8 11 11 8 9 8 9 9.7
第一種 7 12 5 11 10 10 10 13 16 12 10.6


c=500000

第三種 104 70 74 69 76 77 69 102 73 73 78.7
第二種 78 100 99 99 100 98 96 71 94 97 93.2
第一種 90 87 83 85 85 83 84 83 88 86 85.4


c=5000000

第三種 651 871 465 444 1012 436 787 449 432 444 599.1
第二種 568 842 593 747 417 747 719 549 573 563 631.8
第一種 516 279 616 161 466 416 201 495 510 515 417.5

統(tǒng)計5000000的時候在地址欄加入了隨機參數(shù),應(yīng)該是避免了緩存的影響的。從結(jié)果來看,第一種方法并不比另2種方法消耗多,甚至還更有優(yōu)勢,這點和手冊上的說明明顯不一致。

測試系統(tǒng):win 7旗艦

瀏覽器:chrome 52.0.2739.0 m

以上這篇淺談JS中的三種字符串連接方式及其性能比較就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • js實現(xiàn)輪播圖效果 z-index實現(xiàn)輪播圖

    js實現(xiàn)輪播圖效果 z-index實現(xiàn)輪播圖

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-01-01
  • layui的table中顯示圖片方法

    layui的table中顯示圖片方法

    今天小編就為大家分享一篇layui的table中顯示圖片方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 淺談JavaScript的push(),pop(),concat()方法

    淺談JavaScript的push(),pop(),concat()方法

    下面小編就為大家?guī)硪黄獪\談JavaScript的push(),pop(),concat()方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • IE和Firefox之間在JavaScript語法上的差異

    IE和Firefox之間在JavaScript語法上的差異

    這篇文章主要為大家詳細(xì)介紹了IE和Firefox之間在JavaScript語法上的差異,在JavaScript語法上不同的7個方面,感興趣的小伙伴們可以參考一下
    2016-04-04
  • js動態(tài)創(chuàng)建及移除div的方法

    js動態(tài)創(chuàng)建及移除div的方法

    這篇文章主要介紹了js動態(tài)創(chuàng)建及移除div的方法,涉及javascript針對頁面元素的動態(tài)操作技巧,需要的朋友可以參考下
    2015-06-06
  • js用typeof方法判斷undefined類型

    js用typeof方法判斷undefined類型

    js判斷undefined類型,可以使用typeof方法,typeof 返回的是字符串,其中就有一個是undefined
    2014-07-07
  • uniapp解決軟鍵盤彈出問題方法詳解

    uniapp解決軟鍵盤彈出問題方法詳解

    這篇文章主要為大家介紹了uniapp解決軟鍵盤彈出問題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • BOM系列第二篇之定時器requestAnimationFrame

    BOM系列第二篇之定時器requestAnimationFrame

    這篇文章主要介紹了BOM系列第二篇之定時器requestAnimationFrame 的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • JavaScript 接口原理與用法實例詳解

    JavaScript 接口原理與用法實例詳解

    這篇文章主要介紹了JavaScript 接口原理與用法,結(jié)合實例形式詳細(xì)分析了JavaScript 接口原理、優(yōu)缺點、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • JavaScript中的立即執(zhí)行函數(shù)表達(dá)式介紹

    JavaScript中的立即執(zhí)行函數(shù)表達(dá)式介紹

    這篇文章主要介紹了JavaScript中的立即執(zhí)行函數(shù)表達(dá)式介紹,本文著重講解了什么是立即調(diào)用函數(shù)表達(dá)式,需要的朋友可以參考下
    2015-03-03

最新評論