Set.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 Set-Instanzen implementiert das iterable Protokoll und ermöglicht, dass Set-Objekte mit den meisten Syntaxen, die Iterables erwarten, wie dem Spread-Syntax und for...of-Schleifen, verwendet werden können. Sie gibt ein Set-Iterator-Objekt zurück, das die Werte des Sets in Einfügereihenfolge liefert.

Der anfängliche Wert dieser Eigenschaft ist dasselbe Funktionsobjekt wie der anfängliche Wert der Eigenschaft Set.prototype.values.

Probieren Sie es aus

const set1 = new Set();

set1.add(42);
set1.add("forty two");

const iterator1 = set1[Symbol.iterator]();

console.log(iterator1.next().value);
// Expected output: 42

console.log(iterator1.next().value);
// Expected output: "forty two"

Syntax

js
set[Symbol.iterator]()

Parameter

Keine.

Rückgabewert

Der gleiche Rückgabewert wie Set.prototype.values(): ein neues iterables Iterator-Objekt, das die Werte des Sets liefert.

Beispiele

Iteration mit der for...of-Schleife

Beachten Sie, dass es selten notwendig ist, diese Methode direkt aufzurufen. Das Vorhandensein der [Symbol.iterator]()-Methode macht Set-Objekte iterabel, und Iterations-Syntaxen wie die for...of-Schleife rufen diese Methode automatisch auf, um den Iterator zur Iteration zu erhalten.

js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});

for (const v of mySet) {
  console.log(v);
}

Manuelles Erstellen des Iterators

Es ist dennoch möglich, die next()-Methode des zurückgegebenen Iterator-Objekts manuell aufzurufen, um maximale Kontrolle über den Iterationsprozess zu erhalten.

js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});

const setIter = mySet[Symbol.iterator]();

console.log(setIter.next().value); // "0"
console.log(setIter.next().value); // 1
console.log(setIter.next().value); // {}

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-set.prototype-%symbol.iterator%

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch