Spec-Zone.ru › JavaScript

Segments.prototype[Symbol.iterator]()

Базовый уровень Недавно доступен

Эта функция работает на новейших устройствах и версиях браузеров. Эта функция может не работать на старых устройствах или версиях браузеров. Она доступна во всех браузерах с апреля 2024 года.

Метод [Symbol.iterator]() экземпляров Segments реализует протокол итерации и позволяет объектам Segments обрабатываться большинством синтаксисов, ожидающих итераторы, таких как синтаксис распространения и циклы for...of. Он возвращает итератор сегментов, который предоставляет данные о каждом сегменте.

Попробуйте

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"

Синтаксис

segments[Symbol.iterator]()

Параметры

Нет.

Возвращаемое значение

Новый итератор, который предоставляет данные о каждом сегменте. Каждый возвращенный объект имеет те же свойства, что и объект, возвращенный методом containing().

Примеры

Итерация с использованием цикла for...of

Обратите внимание, что вам редко нужно вызывать этот метод напрямую. Наличие метода [Symbol.iterator]() делает объекты Segments итерируемыми, а синтаксисы итерации, такие как цикл for...of, автоматически вызывают этот метод для получения итератора для цикла.

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() возвращаемого объекта итератора, чтобы добиться максимального контроля над процессом итерации.

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® 2027 Internationalization API Specification
# sec-%intlsegmentsprototype%-%symbol.iterator%

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
@@iterator
87
87
125
73
14.1
87
125
62
14.5
14.0
87
14.5
1.0.0
1.8
16.0.0

См. также

  • Intl.Segmenter
  • Intl.Segmenter.prototype.segment()
  • Symbol.iterator
  • Протоколы итерации

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Segmenter/segment/Segments/Symbol.iterator

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API