Repository navigation
Expand file tree
/
Copy pathindex.md
More file actions
136 lines (99 loc) · 5.16 KB
/
Copy pathindex.md
File metadata and controls
136 lines (99 loc) · 5.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
---
title: "Object : méthode statique entries()"
short-title: entries()
slug: Web/JavaScript/Reference/Global_Objects/Object/entries
l10n:
sourceCommit: cd22b9f18cf2450c0cc488379b8b780f0f343397
---
La méthode statique **`Object.entries()`** retourne un tableau contenant les paires clé-valeur des propriétés propres énumérables d'un objet, dont les clés sont des chaînes de caractères.
{{InteractiveExample("Démonstration JavaScript : Object.entries()")}}
```js interactive-example
const object = {
a: "du texte",
b: 42,
};
for (const [key, value] of Object.entries(object)) {
console.log(`${key}: ${value}`);
}
// Résultat attendu :
// "a: du texte"
// "b: 42"
```
## Syntaxe
```js-nolint
Object.entries(obj)
```
### Paramètres
- `obj`
- : Un objet.
### Valeur de retour
Un tableau contenant les paires clé-valeur des propriétés propres énumérables de l'objet donné, dont les clés sont des chaînes de caractères. Chaque paire clé-valeur est un tableau de deux éléments : le premier élément est la clé (toujours une chaîne de caractères), le second est la valeur de la propriété.
## Description
`Object.entries()` retourne un tableau dont les éléments sont des tableaux correspondant aux paires clé-valeur des propriétés propres énumérables à clés de chaînes de caractères trouvées directement sur l'objet. Cela équivaut à itérer avec une boucle {{JSxRef("Statements/for...in", "for...in")}}, sauf qu'une boucle `for...in` énumère aussi les propriétés de la chaîne de prototypes. L'ordre du tableau retourné par `Object.entries()` est le même que celui fourni par une boucle {{JSxRef("Statements/for...in", "for...in")}}.
Si vous n'avez besoin que des clés, utilisez {{JSxRef("Object.keys()")}}. Si vous n'avez besoin que des valeurs, utilisez {{JSxRef("Object.values()")}}.
## Exemples
### Utilisation de `Object.entries()`
```js
const obj = { foo: "bar", baz: 42 };
console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ]
const arrayLike = { 0: "a", 1: "b", 2: "c" };
console.log(Object.entries(arrayLike)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ]
const randomKeyOrder = { 100: "a", 2: "b", 7: "c" };
console.log(Object.entries(randomKeyOrder)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ]
// getFoo est une propriété non énumérable
const myObj = Object.create(
{},
{
getFoo: {
value() {
return this.foo;
},
},
},
);
myObj.foo = "bar";
console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ]
```
### Utiliser `Object.entries()` sur des valeurs primitives
Les arguments qui ne sont pas des objets sont [convertis en objets](/fr/docs/Web/JavaScript/Reference/Global_Objects/Object#conversion_en_objet). [`undefined`](/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined) et [`null`](/fr/docs/Web/JavaScript/Reference/Operators/null) ne peuvent pas être convertis en objets et lèvent immédiatement une {{JSxRef("TypeError")}}. Seules les chaînes de caractères peuvent avoir des propriétés propres énumérables, tandis que toutes les autres primitives retournent un tableau vide.
```js
// Les chaînes de caractères possèdent des indices sous forme de propriétés propres énumérables
console.log(Object.entries("foo")); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ]
// Les autres types primitifs, à l'exception de undefined et null, ne possèdent pas de propriétés propres
console.log(Object.entries(100)); // []
```
### Convertir un objet en `Map`
Le constructeur {{JSxRef("Map/Map", "Map()")}} accepte un itérable de paires d'entrées. Avec `Object.entries`, vous pouvez facilement convertir un {{JSxRef("Object")}} en {{JSxRef("Map")}} :
```js
const obj = { foo: "bar", baz: 42 };
const map = new Map(Object.entries(obj));
console.log(map); // Map(2) {"foo" => "bar", "baz" => 42}
```
### Itérer sur un objet
En utilisant la [décomposition de tableau](/fr/docs/Web/JavaScript/Reference/Operators/Destructuring#décomposition_dun_tableau), vous pouvez itérer facilement sur les objets.
```js
// Avec une boucle for...of
const obj = { a: 5, b: 7, c: 9 };
for (const [key, value] of Object.entries(obj)) {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
}
// Avec les méthodes de tableau
Object.entries(obj).forEach(([key, value]) => {
console.log(`${key} ${value}`); // "a 5", "b 7", "c 9"
});
```
## Spécifications
{{Specifications}}
## Compatibilité des navigateurs
{{Compat}}
## Voir aussi
- [Énumérable et rattachement des propriétés](/fr/docs/Web/JavaScript/Guide/Enumerability_and_ownership_of_properties)
- La méthode statique {{JSxRef("Object.keys()")}}
- La méthode statique {{JSxRef("Object.values()")}}
- La méthode {{JSxRef("Object.prototype.propertyIsEnumerable()")}}
- La méthode statique {{JSxRef("Object.create()")}}
- La méthode statique {{JSxRef("Object.fromEntries()")}}
- La méthode statique {{JSxRef("Object.getOwnPropertyNames()")}}
- La méthode {{JSxRef("Map.prototype.entries()")}}
- [La prothèse d'émulation de `Object.entries` dans `core-js` <sup>(angl.)</sup>](https://github.com/zloirock/core-js#ecmascript-object)
- [La prothèse d'émulation es-shims de `Object.entries` <sup>(angl.)</sup>](https://www.npmjs.com/package/object.entries)