Como processar cada letra do texto (com referências)
https://jsperf.com/str-for-in-of-foreach-map-2
para
Clássico e de longe aquele com mais desempenho . Você deve optar por este caso esteja planejando usá-lo em um algoritmo de desempenho crítico ou se exija a máxima compatibilidade com as versões do navegador.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
para de
for ... of é o novo ES6 para iterador. Suportado pela maioria dos navegadores modernos. É visualmente mais atraente e menos propenso a erros de digitação. Se você optar por este em um aplicativo de produção, provavelmente deverá usar um transpiler como o Babel .
let result = '';
for (let letter of str) {
result += letter;
}
para cada
Abordagem funcional . Airbnb aprovado . A maior desvantagem de fazer dessa maneira é a split()
, que cria uma nova matriz para armazenar cada letra individual da string.
Por quê? Isso reforça nossa regra imutável. Lidar com funções puras que retornam valores é mais fácil de raciocinar do que efeitos colaterais.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
ou
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
A seguir, os que não gosto.
para ... em
Ao contrário de ... of, você obtém o índice de letras em vez da letra. Ele executa muito mal.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
mapa
Abordagem de função, o que é bom. No entanto, o mapa não deve ser usado para isso. Deve ser usado quando for necessário alterar os valores dentro de uma matriz, o que não é o caso.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
ou
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
. Mais adiante, em uma resposta bastante detalhada, mas não suficientemente votada. PS: O link do @ ARJUN não funciona para mim.