Каждый последовательный вызов итератора должен возвращать объект специальной структуры. Давайте ее рассмотрим. Пусть у нас есть массив:
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
.
Последовательно вызывайте его,
пока элементы коллекции не закончатся.