Opprettelse av itererbart objekt i JavaScript
La oss opprette et ekte itererbart
objekt som kan gjentas gjennom
løkken for-of. For å gjøre dette
må objektet ha en tilsvarende
funksjon i Symbol.iterator.
La oss implementere det. La oss si at vi har følgende objekt:
let obj = {
a: 1,
b: 2,
c: 3,
};
La oss legge til en funksjon i Symbol.iterator:
obj[Symbol.iterator] = function() {
}
La oss gjøre denne funksjonen om til en generator:
obj[Symbol.iterator] = function *() {
}
Inne i vår funksjon vil this referere
til selve objektet:
obj[Symbol.iterator] = function *() {
console.log(this); // selve objektet
}
La oss kjøre en gjentakelse av objektet i iteratoren:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Det er alt, objektet kan nå gjentas med
for-of-løkken:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
Lag et objekt som kan gjentas med
for-of-løkken. La et element i
løkken være et objekt hvor nøkkelen key
inneholder nøkkelen til det itererbare
objektet, og nøkkelen val - verdien.
Eksempel:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Vil skrive ut:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}