Set.prototype[Symbol.iterator]()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 2015 年 9 月以來,該特性已在各大瀏覽器中可用。

[Symbol.iterator]() 方法是 Set 例項的一部分,它實現了 可迭代協議,並允許 Set 物件被大多數期望可迭代物件的語法使用,例如 擴充套件語法for...of 迴圈。它返回一個 set 迭代器物件,該物件按插入順序生成 set 中的值。

此屬性的初始值與 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"

語法

js
set[Symbol.iterator]()

引數

無。

返回值

Set.prototype.values() 返回相同的值:一個新的 可迭代迭代器物件,它生成 set 中的值。

示例

使用 for...of 迴圈進行迭代

請注意,你很少需要直接呼叫此方法。[Symbol.iterator]() 方法的存在使得 Set 物件 可迭代,並且像 for...of 迴圈這樣的迭代語法會自動呼叫此方法來獲取迭代器以進行迴圈。

js
const mySet = new Set();
mySet.add("0");
mySet.add(1);
mySet.add({});

for (const v of mySet) {
  console.log(v);
}

手動建立迭代器

你仍然可以手動呼叫返回的迭代器物件的 next() 方法,以實現對迭代過程的最大控制。

js
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); // {}

規範

規範
ECMAScript® 2026 語言規範
# sec-set.prototype-%symbol.iterator%

瀏覽器相容性

另見