Iterator : méthode statique from()
Baseline
2025
Newly available
Depuis March 2025, 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 statique Iterator.from() crée un nouvel objet Iterator à partir d'un itérateur ou d'un objet itérable.
Syntaxe
Iterator.from(object)
Paramètres
Valeur de retour
Si object est un itérable, sa méthode [Symbol.iterator]() est appelée pour obtenir l'itérateur. Sinon, object est supposé être un itérateur. Si l'itérateur est déjà instanceof Iterator (ce qui signifie qu'il a Iterator.prototype dans sa chaîne de prototypes), il est retourné directement. Sinon, un nouvel objet Iterator est créé pour envelopper l'itérateur original.
Description
Cette méthode existe pour convertir des itérateurs personnalisés, probablement exportés par des bibliothèques, en itérateurs appropriés. Tous les objets itérateurs retournés par Iterator.from() héritent d'un objet prototype commun, qui possède les méthodes suivantes :
Exemples
>Convertir un itérable en itérateur approprié
Parce que obj est déjà un itérable qui retourne un itérateur approprié lorsque sa méthode [Symbol.iterator]() est appelée, Iterator.from(obj) retourne le même itérateur.
const iterator = (function* () {
yield 1;
yield 2;
yield 3;
})();
const obj = {
[Symbol.iterator]() {
return iterator;
},
};
const iterator2 = Iterator.from(obj);
console.log(iterator2 === iterator); // true
Parce que obj2 est un itérable qui retourne un itérateur non approprié lorsque sa méthode [Symbol.iterator]() est appelée, Iterator.from(obj2) retourne un nouvel itérateur qui enveloppe l'itérateur original.
const iterator = {
actuel: 0,
next() {
return { valeur: this.actuel++, fait: false };
},
};
const obj2 = {
[Symbol.iterator]() {
return iterator;
},
};
const iterator2 = Iterator.from(obj2);
console.log(iterator2 === iterator); // false
console.log(iterator2.next()); // { valeur: 0, fait: false }
console.log(iterator.next()); // { valeur: 1, fait: false }
Convertir un itérateur en itérateur approprié
Parce que obj est déjà un itérateur approprié, Iterator.from(obj) se retourne lui-même.
const obj = (function* () {
yield 1;
yield 2;
yield 3;
})();
const iterator = Iterator.from(obj);
console.log(iterator === obj); // true
Parce que obj2 est un itérateur non approprié, Iterator.from(obj2) retourne un nouvel itérateur qui enveloppe l'itérateur original.
const obj2 = {
actuel: 0,
next() {
return { valeur: this.actuel++, fait: false };
},
};
const iterator = Iterator.from(obj2);
console.log(iterator === obj2); // false
console.log(iterator.next()); // { valeur: 0, fait: false }
console.log(obj2.next()); // { valeur: 1, fait: false }
Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-iterator.from> |