Вы можете использовать соединение с массивом.
var strArray = [
"test1",
"test2",
"test3"
];
var output = strArray.join(", ");
Вот тест jsperf нескольких различных методов: http://jsperf.com/joining-strings. Присоединение - это, безусловно, самый быстрый способ, который я пробовал, по крайней мере, в 3 раза (в Chrome).
Вам придется попробовать jsperf самостоятельно и / или изменить его, чтобы точно смоделировать то, что вам нужно. К моему удивлению, Firefox 6 и Safari 5 быстрее просто складывают кучу строк, чем при использовании .join()
.
Вы сказали, что ищете решение с linear
временем выполнения. Я предполагаю, что это означает, что когда вы удваиваете количество строк, производительность не хуже двойной. Это означает, что вам нужно протестировать кучу разных случаев и посмотреть, какая техника наиболее близка к линейной производительности. first jsperf объединял 9 строк с разделителями между ними. Итак, я написал второй jsperf , который объединял 18 строк с разделителями между ними. Ни один из методов не был достаточно линейным в Chrome. Как ни странно, метод for loop + =, который является самым медленным из всех, был ближе всего к линейному. Итак, я думаю, вы должны решить, хотите ли вы быстро или линейно. Самый медленный метод, который я попробовал, - самый близкий к линейному, но он все еще медленный. Если вы объединяете действительно большое количество строк, вам нужно протестировать этот конкретный случай, чтобы увидеть, какой из них выигрывает либо по линейности, либо по общей производительности.