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