Ответ 1
Вы можете сделать это, как это, итерируя через массив в цикле, накапливая новый HTML в свой собственный массив, а затем объединяя HTML вместе и вставляя его в DOM в конце:
var array = [...];
var newHTML = [];
for (var i = 0; i < array.length; i++) {
newHTML.push('<span>' + array[i] + '</span>');
}
$(".element").html(newHTML.join(""));
Некоторые люди предпочитают использовать метод jQuery .each()
вместо цикла for
который будет работать следующим образом:
var array = [...];
var newHTML = [];
$.each(array, function(index, value) {
newHTML.push('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
Или потому, что результат итерации массива представляет собой массив с одним элементом, производным от каждого элемента в исходном массиве, jQuery .map
можно использовать следующим образом:
var array = [...];
var newHTML = $.map(array, function(value) {
return('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
Что вы должны использовать, это личный выбор в зависимости от вашего предпочтительного стиля кодирования, чувствительности к производительности и знакомства с .map()
. Я предполагаю, что цикл for
будет самым быстрым, так как он имеет меньше вызовов функций, но если производительность является основным критерием, тогда вам нужно будет сравнить параметры, которые нужно измерить.
FYI, во всех трех этих параметрах HTML накапливается в массив, а затем объединяется в конце и вставляется в DOM все сразу. Это связано с тем, что операции DOM обычно являются самой медленной частью такой операции, поэтому лучше всего минимизировать количество отдельных операций DOM. Результаты накапливаются в массив, потому что добавление элементов в массив и последующее объединение их в конце обычно быстрее, чем добавление строк по ходу.
И, если вы можете жить с IE9 или выше (или установить полисполнение ES5 для .map()
), вы можете использовать версию массива .map
следующим образом:
var array = [...];
$(".element").html(array.map(function(value) {
return('<span>' + value + '</span>');
}).join(""));
Примечание: эта версия также избавляется от промежуточной переменной newHTML
в интересах компактности.