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

js
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.

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}
*/

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.

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}
*/

Đặc tả kỹ thuật

Specification
ECMAScript® 2026 Internationalization API Specification
# sec-%intlsegmentsprototype%-%symbol.iterator%

Tương thích trình duyệt

Xem thêm