String.prototype[Symbol.iterator]()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Die [Symbol.iterator]()
-Methode von String
-Werten implementiert das iterierbare Protokoll und ermöglicht es, dass Zeichenfolgen von den meisten Syntaxen, die Iterables erwarten, wie der Spread-Syntax und for...of
-Schleifen, verwendet werden können. Sie gibt ein String-Iterator-Objekt zurück, das die Unicode-Codepunkte des Zeichenfolgenwerts als einzelne Strings liefert.
Probieren Sie es aus
const str = "The quick red fox jumped over the lazy dog's back.";
const iterator = str[Symbol.iterator]();
let theChar = iterator.next();
while (!theChar.done && theChar.value !== " ") {
console.log(theChar.value);
theChar = iterator.next();
// Expected output: "T"
// "h"
// "e"
}
Syntax
string[Symbol.iterator]()
Parameter
Keine.
Rückgabewert
Ein neues iterables Iterator-Objekt, das die Unicode-Codepunkte des String-Werts als einzelne Strings liefert.
Beschreibung
Strings werden nach Unicode-Codepunkten iteriert. Das bedeutet, dass Graphemcluster getrennt werden, aber Surrogatpaare erhalten bleiben.
// "Backhand Index Pointing Right: Dark Skin Tone"
[..."👉🏿"]; // ['👉', '🏿']
// splits into the basic "Backhand Index Pointing Right" emoji and
// the "Dark skin tone" emoji
// "Family: Man, Boy"
[..."👨👦"]; // [ '👨', '', '👦' ]
// splits into the "Man" and "Boy" emoji, joined by a ZWJ
Beispiele
Iteration mit einer for...of-Schleife
Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Das Vorhandensein der [Symbol.iterator]()
-Methode macht Strings iterierbar, und iterierende Syntaxen wie die for...of
-Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, über den iteriert werden soll.
const str = "A\uD835\uDC68B\uD835\uDC69C\uD835\uDC6A";
for (const v of str) {
console.log(v);
}
// "A"
// "\uD835\uDC68"
// "B"
// "\uD835\uDC69"
// "C"
// "\uD835\uDC6A"
Manuelles Erstellen des Iterators
Sie können weiterhin die next()
-Methode des zurückgegebenen Iterator-Objekts manuell aufrufen, um maximale Kontrolle über den Iterationsprozess zu erreichen.
const str = "A\uD835\uDC68";
const strIter = str[Symbol.iterator]();
console.log(strIter.next().value); // "A"
console.log(strIter.next().value); // "\uD835\uDC68"
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-string.prototype-%symbol.iterator% |