Set.prototype[Symbol.iterator]()
{{JSRef}}
The [Symbol.iterator]()
method of {{jsxref("Set")}}
instances implements the iterable protocol and allows Set
objects to be consumed by most syntaxes expecting iterables, such as the spread syntax and {{jsxref("Statements/for...of", "for...of")}}
loops. It returns a set iterator object that yields the values of the set in insertion order.
The initial value of this property is the same function object as the initial value of the {{jsxref("Set.prototype.values")}}
property.
{{InteractiveExample("JavaScript Demo: Set.prototype[Symbol.iterator]()")}}
const set1 = new Set();
set1.add(42);
set1.add("forty two");
const iterator1 = set1[Symbol.iterator]();
console.log(iterator1.next().value);
// Expected output: 42
console.log(iterator1.next().value);
// Expected output: "forty two"
Syntax
set[Symbol.iterator]()
Parameters
None.
Return value
The same return value as {{jsxref("Set.prototype.values()")}}
: a new iterable iterator object that yields the values of the set.
Examples
Iteration using for…of loop
Note that you seldom need to call this method directly. The existence of the [Symbol.iterator]()
method makes Set
objects iterable, and iterating syntaxes like the for...of
loop automatically call this method to obtain the iterator to loop over.
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});
for (const v of mySet) {
console.log(v);
}
Manually hand-rolling the iterator
You may still manually call the next()
method of the returned iterator object to achieve maximum control over the iteration process.
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); // {}
Specifications
{{Specifications}}
Browser compatibility
{{Compat}}
See also
{{jsxref("Set")}}
{{jsxref("Set.prototype.entries()")}}
{{jsxref("Set.prototype.keys()")}}
{{jsxref("Set.prototype.values()")}}
{{jsxref("Symbol.iterator")}}
- Iteration protocols