Cómo procesar cada letra de texto (con puntos de referencia)
https://jsperf.com/str-for-in-of-foreach-map-2
para
Clásico y, con mucho, el que tiene el mayor rendimiento . Debería optar por este si planea utilizarlo en un algoritmo de rendimiento crítico, o si requiere la máxima compatibilidad con las versiones del navegador.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
para ... de
for ... of es el nuevo ES6 para iterador. Compatible con la mayoría de los navegadores modernos. Es visualmente más atractivo y es menos propenso a errores de tipeo. Si va a utilizar este en una aplicación de producción, probablemente debería estar utilizando un transpilador como Babel .
let result = '';
for (let letter of str) {
result += letter;
}
para cada
Enfoque funcional . Airbnb aprobado . El mayor inconveniente de hacerlo de esta manera es split()
que crea una nueva matriz para almacenar cada letra individual de la cadena.
¿Por qué? Esto hace cumplir nuestra regla inmutable. Tratar con funciones puras que devuelven valores es más fácil de razonar que los efectos secundarios.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
o
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Los siguientes son los que no me gustan.
para ... en
A diferencia de ... de, obtienes el índice de la letra en lugar de la letra. Funciona bastante mal.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
mapa
Enfoque funcional, que es bueno. Sin embargo, el mapa no está destinado a ser utilizado para eso. Debe usarse cuando necesite cambiar los valores dentro de una matriz, que no es el 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) { ... }
. Más de eso más abajo en una respuesta bastante detallada pero no suficientemente votada. PD: el enlace de @ ARJUN no funciona para mí.