成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Javascript中的長字符串拼接

開發 前端
本文介紹的是Javascript中的長字符串拼接,希望對你有幫助,一起來看。

字符串拼接是所有程序設計語言都需要的操作。當拼接結果較長時,如何保證效率就成為一個很重要的問題。

C 語言的 strcat 函數直接操作內存,效率自然最高;C++ 的 string 類是可變的,本質上也是直接操作內存,效率也不在話下;Java 的 String 類不可變,字符串拼接意味著產生新對象,因此提供了專門用于字符串拼接的 StringBuffer 類,也保證了執行效率。

在 Javascript 中,大規模的字符串拼接雖不常見,但也并非沒有。

在這種情況下,傳統的字符串拼接會比較慢:

 

  1. <script>   
  2. function strcat1(count, substr) //將 count 個 substr 拼接在一起  
  3. {  
  4. var result = "";  
  5. for (var i = 0; i < count; ++i)  
  6. {  
  7. result += substr;  
  8. }  
  9. return result;  
  10. }  
  11. var begin = new Date();  
  12. strcat1(10000, "substr");   
  13. var end = new Date();  
  14. alert(end.valueOf() - begin.valueOf());  
  15. </script> 

 

在筆者的機器上(下同)這段代碼要執行 3 秒鐘。有沒有比較快的拼接方法?答案是肯定的,Javascript 也提供了一個類似 StringBuffer 的東西,那就是數組:

 

  1. <script>   
  2. function strcat2(count, substr)  
  3. {  
  4. var buffer = [];  
  5. for (var i = 0; i < count; ++i)  
  6. {  
  7. buffer.push(substr);  
  8. }  
  9. return buffer.join("");  
  10. }  
  11. var begin = new Date();  
  12. strcat2(10000, "substr");   
  13. var end = new Date();  
  14. alert(end.valueOf() - begin.valueOf());  
  15. </script> 

 

這段代碼只需執行 80 毫秒左右,比傳統的字符串拼接快了數十倍。這是針對大規模的字符串拼接而言。對于小規模的字符串拼接,我們可以比較一下兩種拼接方法的效率:

 

  1. <script>  
  2. function strcat1(count, substr)  
  3. {  
  4. var result = "";  
  5. for (var i = 0; i < count; ++i)  
  6. {  
  7. result += substr;  
  8. }  
  9. return result;  
  10. }  
  11. function strcat2(count, substr)  
  12. {  
  13. var buffer = [];  
  14. for (var i = 0; i < count; ++i)  
  15. {  
  16. buffer.push(substr);  
  17. }  
  18. return buffer.join("");  
  19. }  
  20. function test(strcat)  
  21. {  
  22. var substr = "substr";  
  23. var begin = new Date();  
  24. for (var i = 0; i < 1000; ++i)  
  25. {  
  26. strcat(10, substr);  
  27. }  
  28. var end = new Date();  
  29. return end.valueOf() - begin.valueOf();  
  30. }  
  31. alert(test(strcat1) + "," + test(strcat2));  
  32. </script> 

 

這一輪是傳統的拼接方式勝出,其速度大約是數組方式的兩倍多。可以驗證,拼接的次數越少,傳統的拼接方式優勢越大。因此,在大規模的拼接中,如果混用傳統拼接方法和數組拼接方法,速度會更快:

 

  1. <script>   
  2. function strcat3(count, substr)  
  3. {  
  4. var buffer = [];  
  5. count /= 5;  
  6. for (var i = 0; i < count; ++i)  
  7. {  
  8. buffer.push(substr + substr + substr + substr + substr);  
  9. }  
  10. return buffer.join("");  
  11. }  
  12. var begin = new Date();  
  13. strcat3(10000, "substr");   
  14. var end = new Date();  
  15. alert(end.valueOf() - begin.valueOf());  
  16. </script> 

 

這次只需執行 30 毫秒了。因此,筆者推薦以數組方式為主,適當輔以傳統方式來拼接長字符串。下面是一個實例:

 

  1. <script>   
  2. function doLoad()  
  3. {  
  4. var buffer = ["<table style='width:100%' border=1>"];  
  5. for (var i = 0; i < 100; ++i)  
  6. {  
  7. buffer.push("<tr>");  
  8. for (var j = 0; j < 20; ++j)  
  9. {  
  10. buffer.push("<td>" + i + "," + j + "</td>");  
  11. }  
  12. buffer.push("</tr>");  
  13. }  
  14. buffer.push("</table>");  
  15. document.body.innerHTML = buffer.join("");  
  16. }  
  17. </script>  
  18. <body onload="doLoad()"></body> 

說明:

1、傳統方式與數組方式會有以上差別的原因在于:傳統方式拼接 n 個字符串的時間復雜度為 O(n^2),但系數較小;數組方式的時間復雜度為 O(n),但系數較大。

2、以上代碼在 IE6 中調試通過。

希望本文能夠給你帶來幫助。

 

責任編輯:于鐵 來源: 互聯昂網
相關推薦

2011-07-11 15:36:44

JavaScript

2019-12-25 15:41:50

JavaScript程序員編程語言

2022-11-25 07:53:26

bash腳本字符串

2020-09-03 10:13:49

JavaScript字符串pad

2015-06-09 14:43:36

javascript操作字符串

2013-06-24 15:16:29

Java字符串拼接

2021-05-31 07:57:00

拼接字符串Java

2019-02-27 09:08:20

Java 8StringJoineIDEA

2020-10-16 18:35:53

JavaScript字符串正則表達式

2022-12-15 16:23:32

JavaScrip字符串開發

2021-10-31 23:01:50

語言拼接字符串

2021-06-11 18:08:00

Java字符串拼接

2017-01-19 11:26:55

Java 8StringBuild

2025-01-03 08:31:43

2016-12-27 09:46:55

Java 8StringBuild

2010-10-09 11:43:10

MYSQL字符串

2021-12-10 08:17:48

字符串拼接場景

2023-10-31 18:57:02

Java字符串

2020-08-01 16:19:13

JavaScript字符串開發

2011-07-18 13:34:44

SQL Server數拼接字符串
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕在线观看一区 | 成人免费视频 | 一级黄在线观看 | 日日夜夜免费精品视频 | 成人免费一级视频 | 国产精品一区二区三区99 | 美女毛片免费看 | 国产精品视频网站 | 国产在线拍偷自揄拍视频 | av免费网址 | 久久久久九九九女人毛片 | 国产精品美女久久久久久不卡 | 久久99精品久久久久久琪琪 | 欧美激情精品久久久久久变态 | 久久久久成人精品 | 国产成人午夜高潮毛片 | 欧美在线一区二区三区 | 亚洲狠狠丁香婷婷综合久久久 | 欧美日本在线 | 欧美日韩精品一区二区天天拍 | 成人一区二区三区 | 欧美一区免费 | 国产美女视频黄a视频免费 国产精品福利视频 | 亚洲成av人影片在线观看 | 少妇性l交大片免费一 | 色综合久 | 欧美jizzhd精品欧美巨大免费 | 久久精品国产一区二区三区 | 亚洲成人一区二区 | av中文字幕在线观看 | 91综合网 | 国产精品黄视频 | 欧美一区二区视频 | 亚洲午夜视频在线观看 | 国产视频导航 | 国产成人免费视频网站高清观看视频 | 精品一区二区三区免费视频 | 欧美二区三区 | 中文字幕在线观看国产 | 成人黄色av网址 | 欧美性video|