So verarbeiten Sie jeden Textbuchstaben (mit Benchmarks)
https://jsperf.com/str-for-in-of-foreach-map-2
zum
Klassisch und bei weitem derjenige mit der höchsten Leistung . Sie sollten sich für diesen entscheiden, wenn Sie ihn in einem leistungskritischen Algorithmus verwenden möchten oder wenn er die maximale Kompatibilität mit Browserversionen erfordert.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
für ... von
for ... of ist der neue ES6 für Iterator. Unterstützt von den meisten modernen Browsern. Es ist optisch ansprechender und weniger anfällig für Tippfehler. Wenn Sie diesen in einer Produktionsanwendung verwenden, sollten Sie wahrscheinlich einen Transpiler wie Babel verwenden .
let result = '';
for (let letter of str) {
result += letter;
}
für jedes
Funktionaler Ansatz. Airbnb genehmigt . Der größte Nachteil dabei ist split()
, dass ein neues Array erstellt wird, in dem jeder einzelne Buchstabe der Zeichenfolge gespeichert wird.
Warum? Dies setzt unsere unveränderliche Regel durch. Der Umgang mit reinen Funktionen, die Werte zurückgeben, ist leichter zu begründen als Nebenwirkungen.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
oder
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Das Folgende sind diejenigen, die ich nicht mag.
für in
Im Gegensatz zu für ... von erhalten Sie den Buchstabenindex anstelle des Buchstabens. Es funktioniert ziemlich schlecht.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
Karte
Funktionsansatz, der gut ist. Die Karte ist jedoch nicht dafür gedacht. 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;
});
oder
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
. Mehr davon weiter unten in einer recht detaillierten, aber nicht ausreichend bewerteten Antwort. PS: @ ARJUNs Link funktioniert bei mir nicht.