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

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
[Symbol.iterator]

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Uses a non-standard name.
Has more compatibility info.

Siehe auch