Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник JavaScript

Symbol.iterator

Особый ключ, который делает объект перебираемым в for...of и spread.

Доступно с: ES2015

Синтаксис

obj[Symbol.iterator] = function* () { … }

Примеры

Свой перебираемый объект:

const range = {
  from: 1,
  to: 4,
  *[Symbol.iterator]() {
    for (let i = this.from; i <= this.to; i++) yield i;
  },
};
 
console.log([...range].join(', '));
 
for (const n of range) {
  if (n > 2) break;
  console.log(n);
}

Результат:

1, 2, 3, 4
1
2

Итератор вручную — метод next():

const iterator = ['a', 'b'][Symbol.iterator]();
 
console.log(iterator.next());
console.log(iterator.next().value);
console.log(iterator.next().done);

Результат:

{
  "value": "a",
  "done": false
}
b
true

Примечания

Итератор — объект с методом next(), который возвращает { value, done }. Массивы, строки, Map и Set уже перебираемые; обычные объекты — нет.

См. также

  • function* — Функция-генератор: выдаёт значения по одному через yield.
  • for...of — Перебирает значения массива, строки, Map, Set и других перебираемых объектов.
  • Spread syntax — Три точки раскрывают массив или объект на отдельные элементы.
  • Symbol — Создаёт уникальное значение — например, для ключа, который не пересечётся с другими.

В учебнике

  • Итераторы и генераторы — Как работает for...of в JavaScript: перебираемые объекты, итераторы и метод next, функции-генераторы с yield и свой перебираемый объект.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.