Wie man jeden Buchstaben eines Textes verarbeitet (mit Benchmarks)
https://jsperf.com/str-for-in-of-foreach-map-2
für
Klassisch und bei weitem derjenige mit den meisten meiste Leistung . Sie sollten sich für diesen Algorithmus entscheiden, wenn Sie ihn in einem leistungskritischen Algorithmus verwenden wollen oder wenn er maximale Kompatibilität mit den Browser-Versionen erfordert.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
für...von
für...von ist die neue ES6 für Iterator. Wird von den meisten modernen Browsern unterstützt. Es ist visuell ansprechender und weniger anfällig für Tippfehler. Wenn Sie sich in einer Produktionsanwendung für diese Variante entscheiden, sollten Sie wahrscheinlich einen Transpiler wie Babel .
let result = '';
for (let letter of str) {
result += letter;
}
forEach
Funktionell Ansatz. Airbnb genehmigt . Der größte Nachteil bei dieser Vorgehensweise ist die split()
die ein neues Array erstellt, um jeden einzelnen Buchstaben der Zeichenkette zu speichern.
Warum? Damit wird unsere unumstößliche Regel durchgesetzt. Der Umgang mit reinen Funktionen die Werte zurückgeben, ist einfacher zu verstehen als bei Seiteneffekten.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
o
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Die folgenden sind die, die ich nicht mag.
für...in
Im Gegensatz zu for...of erhalten Sie den Buchstabenindex anstelle des Buchstabens. Das funktioniert ziemlich schlecht.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
Karte
Funktionsansatz, was gut ist. Allerdings ist map nicht dafür gedacht, dafür verwendet zu werden. Es sollte verwendet werden, wenn die Werte innerhalb eines Arrays geändert werden müssen, was nicht der Fall ist.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
o
let result = '';
str.split('').map(function(letter) {
result += letter;
});
10 Stimmen
Vielleicht haben Sie danach gesucht: Seit ES6 gibt es
for(const c of str) { ... }
. Mehr dazu weiter unten in einer recht ausführlichen, aber nicht ausreichend hochgestimmten Antwort. PS: Der Link von @ARJUN funktioniert bei mir nicht.