Si può fare in questo modo scorrendo l'array in un ciclo, accumulando il nuovo HTML in esso la propria matrice e poi unire il codice HTML tutti insieme e inserendolo nel DOM alla fine:
var array = [...];
var newHTML = [];
for (var i = 0; i < array.length; i++) {
newHTML.push('<span>' + array[i] + '</span>');
}
$(".element").html(newHTML.join(""));
Alcune persone preferiscono utilizzare .each()
il metodo di jQuery al posto del ciclo for
che avrebbe funzionato in questo modo:
var array = [...];
var newHTML = [];
$.each(array, function(index, value) {
newHTML.push('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
O perché l'uscita dell'iterazione matrice stessa è un array con un elemento derivato da ciascun elemento della origi serie finale, jQuery di .map
può essere utilizzato in questo modo:
var array = [...];
var newHTML = $.map(array, function(value) {
return('<span>' + value + '</span>');
});
$(".element").html(newHTML.join(""));
Quale si dovrebbe utilizzare è una scelta personale a seconda del vostro stile di codifica preferito, la sensibilità per le prestazioni e la familiarità con .map()
. La mia ipotesi è che il ciclo for
sia il più veloce dal momento che ha meno chiamate di funzione, ma se le prestazioni fossero i criteri principali, sarebbe necessario confrontare le opzioni per misurare effettivamente.
FYI, in tutte e tre queste opzioni, l'HTML viene accumulato in un array, quindi unito insieme alla fine e inserito nel DOM tutto in una volta. Questo perché le operazioni DOM sono solitamente la parte più lenta di un'operazione come questa, quindi è meglio ridurre al minimo il numero di operazioni DOM separate. I risultati vengono accumulati in un array perché aggiungere elementi a un array e quindi unirli alla fine è in genere più veloce dell'aggiunta di stringhe man mano che si procede.
E, se si può vivere con IE9 o superiore (o installare un polyfill ES5 per .map()
), è possibile utilizzare la versione matrice di .map
come questo:
var array = [...];
$(".element").html(array.map(function(value) {
return('<span>' + value + '</span>');
}).join(""));
Nota: questa versione anche elimina la variabile intermedia newHTML
nell'interesse della compattezza.
array.join (','); – Pheonix