Object : méthode statique keys()
Baseline
Large disponibilité
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
La méthode statique Object.keys() retourne un tableau contenant les noms des propriétés propres à un objet (qui ne sont pas héritées par la chaîne de prototypes) et qui sont énumérables.
Exemple interactif
const object = {
a: "du texte",
b: 42,
c: false,
};
console.log(Object.keys(object));
// Résultat attendu : Array ["a", "b", "c"]
Syntaxe
Object.keys(obj)
Paramètres
obj-
Un objet.
Valeur de retour
Un tableau de chaînes de caractères représentant les clés de propriétés propres et énumérables de l'objet donné.
Description
Object.keys() retourne un tableau dont les éléments sont des chaînes de caractères correspondant aux noms des propriétés propres et énumérables de l'objet object. C'est la même chose que d'itérer avec une boucle for...in, sauf qu'une boucle for...in énumère également les propriétés de la chaîne de prototypes. L'ordre du tableau retourné par Object.keys() est le même que celui fourni par une boucle for...in.
Si vous avez besoin des valeurs des propriétés, utilisez plutôt Object.values(). Si vous avez besoin à la fois des clés et des valeurs des propriétés, utilisez plutôt Object.entries().
Exemples
Utiliser Object.keys()
// Tableau simple
const tableau = ["a", "b", "c"];
console.log(Object.keys(tableau)); // ['0', '1', '2']
// Objet semblable à un tableau
const objet = { 0: "a", 1: "b", 2: "c" };
console.log(Object.keys(objet)); // ['0', '1', '2']
// Objet semblable à un tableau avec un ordre de clé aléatoire
const unObjet = { 100: "a", 2: "b", 7: "c" };
console.log(Object.keys(unObjet)); // ['2', '7', '100']
// getToto est une propriété qui n'est pas énumérable
const monObjet = Object.create(
{},
{
getToto: {
value() {
return this.toto;
},
},
},
);
monObjet.toto = 1;
console.log(Object.keys(monObjet)); // ['toto']
Si vous voulez toutes les propriétés propres avec des clés de type chaîne de caractères, y compris celles qui ne sont pas énumérables, consultez Object.getOwnPropertyNames().
Utiliser Object.keys() sur les primitives
Les arguments qui ne sont pas des objets sont convertis en objets. undefined et null ne peuvent pas être convertis en objets et déclenchent immédiatement une exception TypeError. Seules les chaînes de caractères peuvent avoir des propriétés propres énumérables, tandis que tous les autres types primitifs retournent un tableau vide.
// Les chaînes de caractères ont des indices comme propriétés propres énumérables
console.log(Object.keys("foo")); // ['0', '1', '2']
// Les autres types primitifs, à l'exception de undefined et null, n'ont pas de propriétés propres
console.log(Object.keys(100)); // []
Note :
Dans ES5, passer un argument qui n'est pas un objet à Object.keys() déclenchait une TypeError.
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification # sec-object.keys |
Compatibilité des navigateurs
Voir aussi
- La prothèse d'émulation de
Object.keysdanscore-js(angl.) - La prothèse d'émulation es-shims de
Object.keys(angl.) - Énumérable et rattachement des propriétés
- La méthode statique
Object.entries() - La méthode statique
Object.values() - La méthode statique
Object.prototype.propertyIsEnumerable() - La méthode statique
Object.create() - La méthode statique
Object.getOwnPropertyNames() - La méthode statique
Map.prototype.keys()