Set.prototype[Symbol.iterator]()
[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% |
瀏覽器相容性
載入中…