docs.rodeo

MDN Web Docs mirror

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

In this article

View on MDN