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 July 2015.

Die Methode [Symbol.iterator]() von String-Werten implementiert das iterable Protokoll und ermöglicht, dass Zeichenketten von den meisten Syntaxen, die Iterables erwarten, wie z. B. der Spread-Syntax und for...of-Schleifen, verarbeitet werden können. Sie gibt ein string iterator object zurück, das die Unicode-Codepunkte des Zeichenkettenwertes als einzelne Strings zurückgibt.

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

js
string[Symbol.iterator]()

Parameter

Keine.

Rückgabewert

Ein neues iterierbares Iterator-Objekt, das die Unicode-Codepunkte des Zeichenkettenwertes als einzelne Strings ausgibt.

Beschreibung

Zeichenketten werden nach Unicode-Codepunkten iteriert. Das bedeutet, dass Grapheme-Cluster aufgeteilt werden, Surrogat-Paare jedoch erhalten bleiben.

js
// "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 der for...of-Schleife

Beachten Sie, dass Sie diese Methode selten direkt aufrufen müssen. Das Vorhandensein der [Symbol.iterator]()-Methode macht Zeichenketten iterierbar, und iterierende Syntaxen wie die for...of-Schleife rufen diese Methode automatisch auf, um den Iterator zu erhalten, der zur Iteration verwendet wird.

js
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 die next()-Methode des zurückgegebenen Iterator-Objekts immer noch manuell aufrufen, um maximale Kontrolle über den Iterationsprozess zu erhalten.

js
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® 2025 Language Specification
# sec-string.prototype-%symbol.iterator%

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch