Iteruojamo objekto kūrimas JavaScript
Sukurkime tikrą iteruojamą
objektą, kurį galima bus pereiti
ciklu for-of. Tam
objektui reikia pridėti atitinkamą
funkciją prie Symbol.iterator.
Implementuokime. Tarkime, mes turime šį objektą:
let obj = {
a: 1,
b: 2,
c: 3,
};
Pridėkime funkciją prie Symbol.iterator:
obj[Symbol.iterator] = function() {
}
Paverskime šią funkciją generatoriumi:
obj[Symbol.iterator] = function *() {
}
Viduje mūsų funkcijos this rodys
į patį objektą:
obj[Symbol.iterator] = function *() {
console.log(this); // pats objektas
}
Paleiskime iteratoriaus objekto perėjimą:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Viskas, objektą galima pereiti ciklu
for-of:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
Sukurkite objektą, kurį galima pereiti
ciklu for-of. Tegul ciklo
elemente patenka objektas, kurio rakto key
bus pereinamo objekto raktas,
o rakto val - reikšmė.
Pavyzdys:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Išves:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}