Segments.prototype[Symbol.iterator]()
Baseline
2024
Newly available
Since April 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức [Symbol.iterator]() của các instance Segments thực thi giao thức iterable và cho phép các đối tượng Segments được sử dụng bởi hầu hết các cú pháp mong đợi iterable, chẳng hạn như cú pháp spread và vòng lặp for...of. Nó trả về một đối tượng iterator segments tạo ra dữ liệu về mỗi phân đoạn.
Try it
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"
Cú pháp
segments[Symbol.iterator]()
Tham số
Không có.
Giá trị trả về
Một đối tượng iterator có thể lặp mới tạo ra dữ liệu về mỗi phân đoạn. Mỗi đối tượng được tạo ra có các thuộc tính giống như đối tượng được trả về bởi phương thức containing().
Ví dụ
>Lặp sử dụng vòng lặp for...of
Lưu ý rằng bạn hiếm khi cần gọi phương thức này trực tiếp. Sự tồn tại của phương thức [Symbol.iterator]() khiến các đối tượng Segments trở thành iterable, và các cú pháp lặp như vòng lặp for...of tự động gọi phương thức này để lấy iterator để lặp qua.
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}
*/
Thủ công duyệt qua iterator
Bạn vẫn có thể gọi thủ công phương thức next() của đối tượng iterator được trả về để đạt được mức kiểm soát tối đa trong quá trình lặp.
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}
*/
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2026 Internationalization API Specification> # sec-%intlsegmentsprototype%-%symbol.iterator%> |