Come elaborare ogni lettera di testo (con parametri di riferimento)
https://jsperf.com/str-for-in-of-foreach-map-2
per
Classico e di gran lunga quello con le massime prestazioni . Dovresti andare con questo se hai intenzione di usarlo in un algoritmo critico per le prestazioni o se richiede la massima compatibilità con le versioni del browser.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
per ... di
per ... of è il nuovo ES6 per iteratore. Supportato dalla maggior parte dei browser moderni. È visivamente più accattivante ed è meno soggetto a errori di battitura. Se stai cercando questo in un'applicazione di produzione, dovresti probabilmente usare un transpiler come Babel .
let result = '';
for (let letter of str) {
result += letter;
}
per ciascuno
Approccio funzionale . Approvato Airbnb . Il più grande svantaggio di farlo in questo modo è il split()
, che crea un nuovo array per memorizzare ogni singola lettera della stringa.
Perché? Questo rafforza la nostra regola immutabile. Trattare con funzioni pure che restituiscono valori è più facile da ragionare rispetto agli effetti collaterali.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
o
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Quelli che seguono sono quelli che non mi piacciono.
per ... in
A differenza di ... of, ottieni l'indice delle lettere anziché la lettera. Si comporta abbastanza male.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
carta geografica
Approccio funzionale, che è buono. Tuttavia, la mappa non è pensata per essere utilizzata per questo. Dovrebbe essere usato quando è necessario modificare i valori all'interno di un array, che non è il caso.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
o
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
. Più di questo più avanti in una risposta abbastanza dettagliata ma non sufficientemente votata. PS: il link di @ ARJUN non funziona per me.