Home » Uncategorized » Iterator/Iterable (and Symbols)

Iterator/Iterable (and Symbols)

Reference: https://javascript.info/iterable

Über Objekte, die die Iterable sind kann mit dem for of loop iteriert werden.

String und Array implementieren Iterable:

for(c of ‚Hans‘) console.log(c);
H
a
n
s
undefined


for(i of [49, 48, 25, 14, 10]) console.log(i);
49
48
25
14
10
undefined

Ein iterierbares Object referenziert auf [Symbol.iterator] einen Iterator. Anstatt über den For-Of-Loop kann man diesen auch explizit beziehen und dessen next()-Methode aufrufen. Es wir dabei ein Objekt mit dem eigentlichen Wert (Feld ‚value‘ zurückgegeben und ein Feld ‚done‘, dass besagt, ob die Iteration schon am Ende angekommen ist.

Ein eigenes Objekt iterable machen:

Ein Objekt (obj3) ist iterable sofern es unter Symbol 'Symbol.iterator' einen Iterator anbietet.
Ein Iterator zeichnet sich aus durch: Eine Methode next(), die ein Objekt {value : …, done: …} zurückgibt, wobei ‚value‚ das schrittgemässe Rückgebeobjekt referenziert und ‚done‚ besagt, ob die Iteration am Ende angekommen ist.

class MyIterator{
    constructor(){
        this.cnt = 0;
    }
    next(){
        return { value : { count : this.cnt++}, done : this.cnt > 2 };
    }
}
let obj3 = {
    [Symbol.iterator]() {
        return new MyIterator();
    }
}
//Test how this works:
for(o of obj3) console.log(o);
//Output:
//{ count: 0 }
//{ count: 1 }
//undefined

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert