Извиквания на итератор в JavaScript

Всяко последователно извикване на итератор трябва да връща обект със специална структура. Нека я разгледаме. Да кажем, че имаме масив:

javascriptlet arr = [1, 2, 3];

Нека получим итератора на масива в променлива:

javascriptlet iter = arr[Symbol.iterator]();

Сега в тази променлива се съдържа обект с метод next. Този метод ще връща обект с ключ value, съдържащ стойността на елемента, и ключ done, съдържащ информация дали обхождането е завършило или не:

javascriptconsole.log( iter.next() ); // {value: 1, done: false}

Последователното извикване на метода next ще връща всеки път следващия елемент:

javascriptconsole.log( iter.next() ); // {value: 1, done: false}
console.log( iter.next() ); // {value: 2, done: false}
console.log( iter.next() ); // {value: 3, done: false}

А щом елементите свършат, ще видим следните стойности:

javascriptconsole.log( iter.next() ); // {value: undefined, done: true}
Задание 1

Вземете итератор на колекция Map. Извиквайте го последователно, докато елементите на колекцията не свършат.

Задание 2

Вземете итератор на колекция NodeList. Извиквайте го последователно, докато елементите на колекцията не свършат.

Задание 3

Вземете итератор на колекция HTMLCollection. Извиквайте го последователно, докато елементите на колекцията не свършат.