Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Segments : méthode [Symbol.iterator]()

Baseline 2024
Nouvellement disponible

Depuis April 2024, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.

La méthode [Symbol.iterator]() des instances de Segments implémente le protocole itérable et permet aux objets Segments d'être utilisés par la plupart des syntaxes attendues pour les itérables, telles que la syntaxe de décomposition et les boucles for...of. Elle retourne un objet itérateur de segments qui fournit des données sur chaque segment.

Exemple interactif

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);
  }
}

// Résultat attendu : "demeure"

Syntaxe

js
segments[Symbol.iterator]()

Paramètres

Aucun.

Valeur de retour

Un nouvel objet itérateur itérable qui fournit des données sur chaque segment. Chaque objet retourné possède les mêmes propriétés que l'objet retourné par la méthode containing().

Exemples

Itérer avec une boucle for...of

Notez que vous avez rarement besoin d'appeler cette méthode directement. L'existence de la méthode [Symbol.iterator]() permet aux objets Segments d'être itérables, et les syntaxes d'itération comme la boucle for...of appellent automatiquement cette méthode pour obtenir l'itérateur à parcourir.

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

Itérer manuellement sur l'itérateur

Vous pouvez toujours appeler manuellement la méthode next() de l'objet itérateur retourné pour obtenir un contrôle maximal sur le processus d'itération.

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();
}

/* Affiche dans la console
{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}
*/

Spécifications

Spécification
ECMAScript® 2027 Internationalization API Specification
# sec-%intlsegmentsprototype%-%symbol.iterator%

Compatibilité des navigateurs

Voir aussi