Segments.prototype[Symbol.iterator]()

Baseline 2024
新推出

自 ⁨2024 年 4 月⁩ 起,此功能可在最新的裝置和瀏覽器版本中執行。此功能可能不適用於較舊的裝置或瀏覽器。

[Symbol.iterator]() 方法是 Segments 例項的方法,它實現了 可迭代協議,並允許 Segments 物件被需要可迭代物件的語法(如 展開語法for...of 迴圈)所消費。它返回一個 segment 迭代器物件,該物件會產生關於每個 segment 的資料。

試一試

const segmenterFr = new Intl.Segmenter("fr", { granularity: "word" });
const string = "Que ma joie demeure";

const iterator = segmenterFr.segment(string)[Symbol.iterator]();

for (const segment of iterator) {
  if (segment.segment.length > 4) {
    console.log(segment.segment);
  }
}

// Expected output: "demeure"

語法

js
segments[Symbol.iterator]()

引數

無。

返回值

一個新的 可迭代迭代器物件,它會產生關於每個 segment 的資料。每個產生的物件都具有與 containing() 方法返回的物件相同的屬性。

示例

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

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

js
const segmenter = new Intl.Segmenter("zh-CN", { granularity: "word" });
const input = "你好,世界!我愛程式設計。";

for (const value of segmenter.segment(input)) {
  console.log(value);
}

/*
{segment: '你好', index: 0, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: ',', index: 2, input: '你好,世界!我愛程式設計。', isWordLike: false}
{segment: '世界', index: 3, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: '!', index: 5, input: '你好,世界!我愛程式設計。', isWordLike: false}
{segment: '我', index: 6, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: '愛', index: 7, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: '編', index: 8, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: '程', index: 9, input: '你好,世界!我愛程式設計。', isWordLike: true}
{segment: '。', index: 10, input: '你好,世界!我愛程式設計。', isWordLike: false}
*/

手動建立迭代器

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

js
const segmenter = new Intl.Segmenter("fr", { granularity: "word" });
const input = "Moi ? N'est-ce pas ?";
const segments = segmenter.segment(input);
const iterator = segments[Symbol.iterator]();

let result = iterator.next();

while (!result.done) {
  console.log(result.value);
  result = iterator.next();
}

/*
{segment: 'Moi', index: 0, input: "Moi ? N'est-ce pas ?", isWordLike: true}
{segment: ' ', index: 3, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: '?', index: 4, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: ' ', index: 5, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: "N'est", index: 6, input: "Moi ? N'est-ce pas ?", isWordLike: true}
{segment: '-', index: 11, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: 'ce', index: 12, input: "Moi ? N'est-ce pas ?", isWordLike: true}
{segment: ' ', index: 14, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: 'pas', index: 15, input: "Moi ? N'est-ce pas ?", isWordLike: true}
{segment: ' ', index: 18, input: "Moi ? N'est-ce pas ?", isWordLike: false}
{segment: '?', index: 19, input: "Moi ? N'est-ce pas ?", isWordLike: false}
*/

規範

規範
ECMAScript® 2026 國際化 API 規範
# sec-%intlsegmentsprototype%-%symbol.iterator%

瀏覽器相容性

另見