Създаване на итерируем обект в JavaScript
Нека създадем истински итерируем
обект, който може да бъде обходен
чрез цикъл for-of. За това
обектът трябва да добави съответна
функция в Symbol.iterator.
Нека го реализираме. Да предположим, че имаме следния обект:
let obj = {
a: 1,
b: 2,
c: 3,
};
Добавяме функция в Symbol.iterator:
obj[Symbol.iterator] = function() {
}
Превръщаме тази функция в генератор:
obj[Symbol.iterator] = function *() {
}
Във функцията this ще сочи
към самия обект:
obj[Symbol.iterator] = function *() {
console.log(this); // самия обект
}
Стартираме обхождане на обекта в итератора:
obj[Symbol.iterator] = function *() {
for (let key in this) {
yield obj[key];
}
}
Готово, обектът може да се обхожда с цикъл
for-of:
for (let elem of obj) {
console.log(elem); // 1, 2, 3
}
Направете обект, който може да се обхожда
с цикъл for-of. Нека в елемента
на цикъла попадне обект, в ключ key
на който ще бъде ключът на обхождания
обект, а в ключ val - стойността.
Пример:
let obj = {a: 1, b: 2, c: 3};
for (let elem of obj) {
console.log(elem);
}
Ще изведе:
{key: 'a', val: 1}
{key: 'b', val: 2}
{key: 'c', val: 3}