Set.prototype[Symbol.iterator]()
Базовый уровень Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод [Symbol.iterator]() экземпляров Set реализует протокол итерации и позволяет использовать объекты Set большинством синтаксических конструкций, ожидающих итерируемые объекты, таких как оператор расширения (spread syntax) и циклы for...of. Он возвращает объект-итератор множества, который выдает значения множества в порядке их добавления.
Начальное значение этого свойства является тем же самым объектом-функцией, что и начальное значение свойства Set.prototype.values.
Попробуйте
const set = new Set();
set.add(42);
set.add("forty two");
const iterator = set[Symbol.iterator]();
console.log(iterator.next().value);
// Expected output: 42
console.log(iterator.next().value);
// Expected output: "forty two"
Синтаксис
set[Symbol.iterator]()
Параметры
Нет.
Возвращаемое значение
То же самое возвращаемое значение, что и у Set.prototype.values(): новый итерируемый объект-итератор, который выдает значения множества.
Примеры
Итерация с использованием цикла for...of
Обратите внимание, что редко требуется вызывать этот метод напрямую. Наличие метода [Symbol.iterator]() делает объекты Set итерируемыми, а конструкции итерации, такие как цикл for...of, автоматически вызывают этот метод для получения итератора для обхода.
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
console.log(v);
}
Ручное создание итератора
Вы всё равно можете вручную вызывать метод next() возвращаемого объекта-итератора, чтобы получить максимальный контроль над процессом итерации.
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
const setIter = mySet[Symbol.iterator]();
console.log(setIter.next().value); // "0"
console.log(setIter.next().value); // 1
console.log(setIter.next().value); // {}
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
@@iterator |
43 |
12 |
36
27–36Используется свойство-заполнитель с именем@@iterator.17–27Используется свойство-заполнитель с именемiterator. |
30 |
9 |
43 |
36
27–36Используется свойство-заполнитель с именем@@iterator.17–27Используется свойство-заполнитель с именемiterator. |
30 |
9 |
4.0 |
43 |
9 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
SetSet.prototype.entries()Set.prototype.keys()Set.prototype.values()Symbol.iterator- Протоколы итерации
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/Symbol.iterator