Извиквания на итератор в JavaScript
Всяко последователно извикване на итератор трябва да връща обект със специална структура. Нека я разгледаме. Да кажем, че имаме масив:
let arr = [1, 2, 3];
Нека получим итератора на масива в променлива:
let iter = arr[Symbol.iterator]();
Сега в тази променлива се съдържа обект
с метод next. Този метод ще връща
обект с ключ value, съдържащ
стойността на елемента, и ключ done,
съдържащ информация дали обхождането е
завършило или не:
console.log( iter.next() ); // {value: 1, done: false}
Последователното извикване на метода next
ще връща всеки път следващия
елемент:
console.log( iter.next() ); // {value: 1, done: false}
console.log( iter.next() ); // {value: 2, done: false}
console.log( iter.next() ); // {value: 3, done: false}
А щом елементите свършат, ще видим следните стойности:
console.log( iter.next() ); // {value: undefined, done: true}
Вземете итератор на колекция Map.
Извиквайте го последователно,
докато елементите на колекцията не свършат.
Вземете итератор на колекция NodeList.
Извиквайте го последователно,
докато елементите на колекцията не свършат.
Вземете итератор на колекция HTMLCollection.
Извиквайте го последователно,
докато елементите на колекцията не свършат.