我正在构建警报电子邮件的内容,该电子邮件可能包含大量数据。
我知道字符串是不可变的。在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("");