JavaRush /Курсы /Модуль 1: Web Core /Iterables и Iterators

Iterables и Iterators

Модуль 1: Web Core
23 уровень , 0 лекция
Открыта

1.1 Основные понятия

Итераторы и итерируемые объекты (iterables) в JavaScript являются фундаментальными концепциями, которые позволяют объектам быть перебираемыми. Эти концепции широко используются в современном JavaScript, особенно в таких конструкциях, как циклы for...of, оператор распространения (spread operator), деструктуризация и многие другие. В этой лекции мы рассмотрим, что такое iterables и iterators, как они работают и как их создавать и использовать.

Iterables (Итерируемые объекты)

Итерируемые объекты — это объекты, которые реализуют протокол итерации. У них должен быть специальный метод с ключом [Symbol.iterator], который возвращает объект-итератор.

Iterators (Итераторы)

Итератор — это объект с методом next(), который возвращает объект с двумя свойствами:

  • value — значение следующего элемента последовательности
  • done — булево значение, указывающее, закончилась ли последовательность (true) или нет (false)

Рассмотрим примеры использования.

Встроенные итерируемые объекты

JavaScript имеет несколько встроенных итерируемых объектов, включая массивы, строки, объекты Set и Map.

Пример 1: Итерирование массива

JavaScript
    
      const array = [1, 2, 3, 4, 5];

      for (const item of array) {
        console.log(item);
      }

      // Выведет: 1 2 3 4 5
    
  

Пример 2: Итерирование строки

JavaScript
    
      const string = 'hello';

      for (const char of string) {
        console.log(char);
      }

      // Выведет: h e l l o
    
  

1.2 Создание своих итераторов

Вы можете создать собственный итератор, реализуя протокол итерации — создание метода next().

Пример 1: Создание итератора

JavaScript
    
      function createIterator(array) {
        let index = 0;

        return {
          next: function() {
            if (index < array.length) {
              return { value: array[index++], done: false };
            } else {
              return { done: true };
            }
          }
        };
      }

      const myIterator = createIterator([1, 2, 3]);

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

Создание итерируемых объектов

Чтобы объект стал итерируемым, он должен реализовать метод [Symbol.iterator]. Да, это такое хитрое название. Вот как его создать.

Пример 2: Создание итерируемого объекта

JavaScript
    
      const myIterable = {
        *[Symbol.iterator]() {
          yield 1;
          yield 2;
          yield 3;
        }
      };

      for (const value of myIterable) {
        console.log(value);
      }

      // Выведет: 1 2 3
    
  

1.3 Встроенные методы

Рассмотрим встроенные методы и операторы для работы с итерируемыми объектами.

Пример 1: Оператор spread

Оператор spread (...) может использоваться для копирования или объединения итерируемых объектов.

JavaScript
    
      const array = [1, 2, 3];
      const newArray = [...array, 4, 5, 6];

      console.log(newArray); // Выведет: [1, 2, 3, 4, 5, 6]
    
  

Пример 2: Деструктуризация

Деструктуризация позволяет извлекать значения из итерируемых объектов.

JavaScript
    
      const [first, second, third] = [1, 2, 3];

      console.log(first);  // Выведет: 1
      console.log(second); // Выведет: 2
      console.log(third);  // Выведет: 3
    
  

Пример 3: Методы Array.from и Array.of

Метод Array.from() позволяет создать массив из итерируемого объекта.

JavaScript
    
      const set = new Set([1, 2, 3, 4, 5]);
      const array = Array.from(set);

      console.log(array); // Выведет: [1, 2, 3, 4, 5]
    
  
1
Задача
Модуль 1: Web Core, 23 уровень, 0 лекция
Недоступна
Итератор чисел
Итератор чисел
1
Задача
Модуль 1: Web Core, 23 уровень, 0 лекция
Недоступна
Итератор Фибоначчи
Итератор Фибоначчи
Комментарии (1)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gans Electro Уровень 4
11 декабря 2025
Эххх... Дочитал первую книгу "Повелителя Тайн". Выпал из жизни на месяц, но это было хорошо. "Миру нужна Справедливость)))". Мой топ сейчас: 1. Реинкарнация безработного 2. Повелитель Тайн 3. Всеведающий читатель Возьму перерыв от чтения и закончу несчастные оставшиеся 4 уровня. Затем начну Docker параллельно читая вторую книгу по "ПТ". Когда закончу оба вернусь в Java. Все же мы не живем в мире полная хаоса и безумия, которому скоро наступит кирдык. Пока мы живы всегда есть надежда. Упорным трудом мы добиваемся высот. И да: + лекция в копилке