javascript / intermediate
Snippet
Implementierung benutzerdefinierter Iteratoren
Durch die Implementierung der Symbol.iterator-Methode wird ein Objekt 'iterierbar', wodurch es in for...of-Schleifen und mit dem Spread-Operator verwendet werden kann. Die Methode muss ein Objekt mit einer next()-Funktion zurückgeben.
snippet.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
const countdown = {from: 5,[Symbol.iterator]() {let current = this.from;return {next() {return current >= 0? { value: current--, done: false }: { done: true };}};}};for (const num of countdown) {console.log(num); // 5, 4, 3, 2, 1, 0}
Erklärung
1
[Symbol.iterator]() { ... }
Ein spezielles integriertes Symbol, das den Standard-Iterator für ein Objekt definiert.
2
next() { ... }
Die Funktion, die vom Iterator aufgerufen wird, um das nächste Element in der Sequenz abzurufen.