You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/05-data-types/09-keys-values-entries/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ Anche gli oggetti supportano dei metodi simili, ma la loro sintassi è leggermen
17
17
18
18
## Object.keys, values, entries
19
19
20
-
Per i semplici oggetti, sono resi disponibile i seguenti metodi:
20
+
Per i semplici oggetti, sono disponibili i seguenti metodi:
21
21
22
22
-[Object.keys(obj)](mdn:js/Object/keys) -- ritorna un array di chiavi.
23
23
-[Object.values(obj)](mdn:js/Object/values) -- ritorna un array di valori.
@@ -34,7 +34,7 @@ La prima differenza è che dobbiamo chiamare `Object.keys(obj)`, non `obj.keys()
34
34
35
35
Perché? La principale motivazione è la flessibilità. Ricordate, gli oggetti sono la base di tutte le strutture complesse in JavaScript. Quindi potremmo avere un nostro oggetto come `order` che implementa il proprio metodo `order.values()`. E potremmo ancora chiamare `Object.values(order)`.
36
36
37
-
La seconda differenza è che i metodi `Object.*` ritornano un array, non un oggetto iterabile. Questo è comportamento è dovuto a ragioni storiche.
37
+
La seconda differenza è che i metodi `Object.*` ritornano un array, non un oggetto iterabile. Questo comportamento è dovuto a ragioni storiche.
38
38
39
39
Ad esempio:
40
40
@@ -63,21 +63,21 @@ for (let value of Object.values(user)) {
63
63
}
64
64
```
65
65
66
-
```warn header="Object.keys/values/entries ingorano le proprietà di tipo symbol"
66
+
```warn header="Object.keys/values/entries ignorano le proprietà di tipo symbol"
67
67
Proprio come nel caso del ciclo `for..in`, questi metodi ignorano le proprietà che utilizzano `Symbol(...)` come chiave.
68
68
69
69
Solitamente questo è un vantaggio. Ma se volessimo ottenere anche le chiavi di tipo symbol, esiste un secondo metodo [Object.getOwnPropertySymbols](mdn:js/Object/getOwnPropertySymbols) che ritorna un array di chiavi di tipo symbol. Invece, il metodo [Reflect.ownKeys(obj)](mdn:js/Reflect/ownKeys) ritorna *tutte* le chiavi.
70
70
```
71
71
72
72
73
-
## Transforming objects
73
+
## Trasformare gli oggetti
74
74
75
75
Per gli oggetti mancano molti metodi che sono invece presenti per gli array, ad esempio `map`, `filter` e molti altri.
76
76
77
77
Se volessimo comunque applicarli, allora possiamo utilizzare `Object.entries` seguito da `Object.fromEntries`:
78
78
79
79
1. Applichiamo `Object.entries(obj)` per ottenere un array di coppie chiave/valore da `obj`.
80
-
2. Applichiamo il metodo, esempio `map`.
80
+
2. Applichiamo il metodo, ad esempio `map`.
81
81
3. Applichiamo `Object.fromEntries(array)` all'array risultante per ottenere nuovamente un oggetto.
82
82
83
83
Ad esempio, se abbiamo un oggetto di prezzi che vogliamo raddoppiare:
@@ -91,13 +91,13 @@ let prices = {
91
91
92
92
*!*
93
93
let doublePrices =Object.fromEntries(
94
-
// converte ad array, map, e successivamente fromEntries ci ritorna l'oggetto
94
+
// converte ad array, chiama map, e successivamente fromEntries ci ritorna l'oggetto
95
95
Object.entries(prices).map(([key, value]) => [key, value *2])
96
96
);
97
97
*/!*
98
98
99
99
alert(doublePrices.meat); // 8
100
100
```
101
101
102
-
Ad un primo sguardo potrebbere risultare complesso, ma diventa molto più familiare dopo un paio di utilizzi.
102
+
Ad un primo sguardo potrebbe risultare complesso, ma diventa molto più familiare dopo un paio di utilizzi.
0 commit comments