Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Array : méthode values()
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mai 2018.
La méthodevalues() des instances deArray retourne un nouvel objetitérateur de tableau qui itère sur la valeur de chaque élément du tableau.
Dans cet article
Exemple interactif
const array = ["a", "b", "c"];const iterator = array.values();for (const value of iterator) { console.log(value);}// Résultat attendu : "a"// Résultat attendu : "b"// Résultat attendu : "c"Syntaxe
values()Paramètres
Aucun.
Valeur de retour
Un nouvelobjet d'itérateur itérable.
Description
Array.prototype.values() est l'implémentation par défaut deArray.prototype[Symbol.iterator]().
Array.prototype.values === Array.prototype[Symbol.iterator]; // trueLorsqu'elle est utilisée sur untableau creux, la méthodevalues() itère sur les cases vides comme si elles avaient la valeur indéfinie (undefined).
La méthodevalues() estgénérique. Elle attend seulement que la valeur dethis possède une propriétélength et des propriétés à indices entiers.
Exemples
>Itérer avec une bouclefor...of
Commevalues() retourne un itérateur itérable, vous pouvez utiliser une bouclefor...of pour l'itérer.
const arr = ["a", "b", "c", "d", "e"];const iterator = arr.values();for (const letter of iterator) { console.log(letter);} // "a" "b" "c" "d" "e"Itérer avecnext()
Comme la valeur de retour est aussi un itérateur, vous pouvez appeler directement sa méthodenext().
const arr = ["a", "b", "c", "d", "e"];const iterator = arr.values();iterator.next(); // { value: "a", done: false }iterator.next(); // { value: "b", done: false }iterator.next(); // { value: "c", done: false }iterator.next(); // { value: "d", done: false }iterator.next(); // { value: "e", done: false }iterator.next(); // { value: undefined, done: true }console.log(iterator.next().value); // undefinedRéutilisation de l'itérable
Attention :L'objet itérateur de tableau doit être utilisé une seule fois. Ne le réutilisez pas.
L'itérable retourné parvalues() n'est pas réutilisable. Lorsquenext().done = true ou quecurrentIndex > length,la bouclefor...of se termine et toute itération supplémentaire n'a aucun effet.
const arr = ["a", "b", "c", "d", "e"];const values = arr.values();for (const letter of values) { console.log(letter);}// "a" "b" "c" "d" "e"for (const letter of values) { console.log(letter);}// undefinedSi vous utilisez une instructionbreak pour arrêter l'itération prématurément, l'itérateur peut reprendre à la position courante lors de la prochaine itération.
const arr = ["a", "b", "c", "d", "e"];const values = arr.values();for (const letter of values) { console.log(letter); if (letter === "b") { break; }}// "a" "b"for (const letter of values) { console.log(letter);}// "c" "d" "e"Mutations pendant l'itération
Aucune valeur n'est stockée dans l'objet itérateur de tableau retourné parvalues() : il stocke l'adresse du tableau utilisé lors de sa création et lit l'indice courant à chaque itération. Ainsi, la valeur retournée dépend de la valeur stockée à cet indice au moment de l'itération. Si les valeurs du tableau changent, celles de l'itérateur changent aussi.
const arr = ["a", "b", "c", "d", "e"];const iterator = arr.values();console.log(iterator); // Array Iterator { }console.log(iterator.next().value); // "a"arr[1] = "n";console.log(iterator.next().value); // "n"Contrairement auxméthodes itératives, l'itérateur de tableau ne mémorise pas la longueur du tableau à sa création, mais la lit à chaque itération. Ainsi, si le tableau grandit pendant l'itération, l'itérateur visitera aussi les nouveaux éléments. Cela peut entraîner des boucles infinies.
const arr = [1, 2, 3];for (const e of arr) { arr.push(e * 10);}// RangeError : longueur de tableau non valideItération sur les tableaux creux
values() visitera les cases vides comme si elles valaientundefined.
for (const element of [, "a"].values()) { console.log(element);}// undefined// 'a'Appelervalues() sur des objets qui ne sont pas des tableaux
La méthodevalues() lit la propriétélength dethis puis accède à chaque propriété dont la clé est un entier non négatif inférieur àlength.
const objetSimilaireTableau = { length: 3, 0: "a", 1: "b", 2: "c", 3: "d", // ignoré par values() car length vaut 3};for (const entry of Array.prototype.values.call(objetSimilaireTableau)) { console.log(entry);}// a// b// cSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.values> |
Compatibilité des navigateurs
Voir aussi
- Guide des collections indexées
- L'objet global
Array - La méthode
Array.prototype.entries() - La méthode
Array.prototype.keys() - La méthode
Array.prototype[Symbol.iterator]() - La méthode
TypedArray.prototype.values() - Protocoles d'itération
- Prothèse d'émulation de
Array.prototype.valuesdanscore-js(angl.) - Prothèse d'émulation es-shims de
Array.prototype.values(angl.)