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