代码之家  ›  专栏  ›  技术社区  ›  meo

如何构造长字符串

  •  3
  • meo  · 技术社区  · 14 年前

    我需要用JavaScript构造一个长字符串。我就是这么做的:

    var html = '<div style="balbalblaba">&nbsp;</div>';
    for(i = 1; i <= 400; i++){
       html+=html;
    };
    

    当我在Firefox中执行它的时候,它会占用很多时间或者使它崩溃。最好的方法是什么?在JS中构造大字符串的最佳方法通常是什么?

    有人能帮我吗?

    4 回复  |  直到 14 年前
        1
  •  12
  •   Community nesinervink    7 年前

    我想你是说 html += html; .

    如果你这样做,你的 html 管柱长度为37×2。 四百 =9.5×10 一百二十一 这超出了任何浏览器、任何计算机、任何 〔1〕 已知宇宙可以处理。

    如果只想重复该字符串400次,请使用

    var res = "";
    for (var i = 0; i < 400; ++ i)
       res += html;
    return res;
    

    var res = [];
    for (var i = 0; i < 400; ++ i)
       res.push(html);
    return res.join("");
    

    Repeat String - Javascript 更多选项。


    【1】:就像在“这个宇宙”里一样。

        2
  •  6
  •   Andy E    14 年前

    在某些浏览器中,字符串连接非常慢( 咳嗽 IE6*咳嗽*)。加入一个数组应该比循环连接快得多:

    var arr = new Array(401);
    var html = arr.join('<div style="balbalblaba">&nbsp;</div>');
    
        3
  •  1
  •   Kathy Van Stone    14 年前

    另一种方法是创建一个 Array 然后使用 Array.join('') . 这实际上是构建字符串的python方法,但它也适用于javascript。

        4
  •  0
  •   Devon_C_Miller    14 年前
    var src = '<div style="balbalblaba">&nbsp;</div>';
    var html = '';
    for(i = 1; i <= 400; i++){
       html=+src;
    };
    

    您的代码将字符串加倍400次。