Iterator (ітератор) - об'єкт, призначений для перебору іншого об'єкта.
Ітеруйму об'єкти - це ті, вміст яких можна перебрати в циклі.
Обробка елементів колекції/масиву звичайна і часта операція. В JavaScript є кілька способів обходу колекції починаючи з простого for і for ... in .
var mas=[1,6,8,56,3];
for ( var i = 0; i < mas.length; i++) {
alert(mas[i]);
}
var obj = {a: 1 , b: 2, c: 3};
for( var i in obj) {
alert(i+': '+obj[i]);
}
У об'єкта Array є метод обходу всіх елементів forEach().
Ітератор - це об'єкт, який знає як отримати доступ до елементів колекції по одному за раз, зберігаючи свою поточну позицію (курсор) в цій послідовності. В JavaScript ітератор - це об'єкт, який має метод next(), який повертає наступний об'єкт в послідовності. Цей метод може викликати виключення StopIteration, коли послідовність закінчилася.
Метод next(), який при кожному виклику повертає об'єкт з властивостями: value - чергове значення, done - false якщо є ще значення, і true - в кінці.
Ітератор може використовуватися різними способами: безпосередньо через виклик методу next() або використовуючи конструкції for ... in або for...of.
Створення ітератора:
//функція інтератор
function Iterator(array){
var nextIndex = 0;
return {
next: function(){
return nextIndex < array.length ?
{value: array[nextIndex++], done: false} :
{done: true};
}
}
}
var mas= [ "a" , "b" , "c" ];
var k=Iterator(mas);
alert(k.next().value);