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.

Die Methode [Symbol.iterator]() von Segments-Instanzen implementiert das iterable Protokoll und ermöglicht es Segments-Objekten, von den meisten Syntaxen, die Iterables erwarten, wie etwa der Spread-Syntax und for...of-Schleifen, verwendet zu werden. Sie gibt ein Segment-Iteratorobjekt zurück, das Daten über jedes Segment liefert.

Probieren Sie es aus

Syntax

js
segments[Symbol.iterator]()

Parameter

Keine.

Rückgabewert

Ein neues iterables Iteratorobjekt, das Daten über jedes Segment liefert. Jedes zurückgegebene Objekt hat die gleichen Eigenschaften wie das Objekt, das von der Methode containing() zurückgegeben wird.

Beispiele

Iteration mit der for...of-Schleife

Beachten Sie, dass es selten notwendig ist, diese Methode direkt aufzurufen. Die Existenz der Methode [Symbol.iterator]() macht Segments-Objekte iterierbar, und Iterationssyntaxen wie die for...of-Schleife rufen diese Methode automatisch auf, um den Iterator für die Schleife zu erhalten.

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

Manuelles Erstellen eines Iterators

Sie können immer noch manuell die next()-Methode des zurückgegebenen Iteratorobjekts aufrufen, um maximale Kontrolle über den Iterationsprozess zu erhalten.

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

Spezifikationen

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

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch