Comment traiter chaque lettre de texte (avec des repères)
https://jsperf.com/str-for-in-of-foreach-map-2
pour
Classique et de loin celui avec le plus de performances . Vous devriez aller avec celui-ci si vous prévoyez de l'utiliser dans un algorithme critique de performance, ou qu'il nécessite la compatibilité maximale avec les versions du navigateur.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
pour ... de
for ... of est le nouveau ES6 pour itérateur. Pris en charge par la plupart des navigateurs modernes. Il est visuellement plus attrayant et moins sujet aux erreurs de frappe. Si vous optez pour celui-ci dans une application de production, vous devriez probablement utiliser un transpilateur comme Babel .
let result = '';
for (let letter of str) {
result += letter;
}
pour chaque
Approche fonctionnelle . Approuvé Airbnb . Le plus gros inconvénient de le faire de cette façon est le split()
, qui crée un nouveau tableau pour stocker chaque lettre individuelle de la chaîne.
Pourquoi? Cela renforce notre règle immuable. Il est plus facile de raisonner sur les fonctions pures qui renvoient des valeurs que sur les effets secondaires.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
ou
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Ce qui suit sont ceux que je n'aime pas.
pour ... dans
Contrairement à pour ... de, vous obtenez l'index des lettres au lieu de la lettre. Il fonctionne assez mal.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
carte
Approche fonctionnelle, ce qui est bien. Cependant, la carte n'est pas destinée à être utilisée pour cela. Il doit être utilisé lorsque vous devez modifier les valeurs à l'intérieur d'un tableau, ce qui n'est pas le cas.
// 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) { ... }
. Plus de cela plus loin dans une réponse assez détaillée mais pas suffisamment votée. PS: Le lien @ ARJUN ne fonctionne pas pour moi.