如何在Javascript中有效地构造巨大的字符串?

时间:2018-04-28 10:37:47

标签: javascript string

我正在构建警报电子邮件的内容,该电子邮件可能包含大量数据。

我知道字符串是不可变的。在Java中,我会使用StringBuilder。但是,在Javascript中,最好的方法是什么?

我知道下面的方法,我想知道哪一个更有效,轮流消耗内存和处理时间。

方法0:

acc = "";
lotsOfItems.forEach(c => acc += toHTML(c))

方法1:

lotsOfItems.reduce((acc,c)=>acc+toHTML(c),"")

方法2:

lotsOfItems.map(x=>toHTML(x)).join("")

我想知道缓冲区或流是否是更好的方式。

===加法1 ===

这个问题也适用于toHTML,它也需要处理巨大的数组。

===加法2 ===

如评论中所述,此处包含toHTML的实际代码

    const summary = location_alertMessages.map(([location_id, alertMessages]) =>
      `<h2>Location ID: ${location_id}</h2>`
      + "<table><thead><th>Time</th><th>Incident</th></thead><tbody>"
      /* table row begin */
      + alertMessages.reduce((acc, c) => acc + `<tr><td>${formatDate(c.alert_timestamp)}</td><td>${c.title}</td></tr>`, "")
      /* table row end */
      + "</tbody></table>"
    ).join("");

    const detail = location_alertMessages.map(([location_id, alertMessages]) =>
      `<h2>Location ID: ${location_id}</h2>`
      + alertMessages.reduce((acc, c) => acc + `<h3>${c.title}</h3><p>${c.content}</p>`, "")
    )
      .join("");

0 个答案:

没有答案