Vai al contenuto
eLearner.app
Modulo 3 · Lezione 2 di 410/32 nel corso~10 min
Lezioni del modulo (2/4)

Oggetti: la mappa chiave-valore

Un oggetto in JS è una raccolta non ordinata di coppie chiave → valore. Le chiavi sono stringhe (o Symbol), i valori sono qualsiasi cosa: numeri, stringhe, array, altri oggetti, funzioni. È la struttura dati più usata del linguaggio: ogni "record" del tuo dominio sarà tipicamente un oggetto.

JS
const utente = {
  nome: 'Anna',
  eta: 28,
  attivo: true,
  ruoli: ['admin', 'editor'],
};

Leggere proprietà: dot vs bracket

Esistono due notazioni equivalenti:

JS
utente.nome; // 'Anna'    (dot — la forma normale)
utente['nome']; // 'Anna'    (bracket — equivalente)

// Le bracket sono OBBLIGATORIE quando:
// 1) la chiave non è un identificatore valido
const tag = { 'codice-fiscale': 'ABC123' };
tag['codice-fiscale']; // OK
// tag.codice-fiscale;      // errore di sintassi

// 2) la chiave è calcolata (variabile/espressione)
const campo = 'eta';
utente[campo]; // 28

Una proprietà mancante restituisce undefined, senza errori:

JS
utente.telefono; // undefined

Aggiungere, modificare, rimuovere

JS
const u = { nome: 'Anna' };
u.eta = 28; // aggiunge
u.nome = 'Anna B.'; // modifica
delete u.eta; // rimuove la proprietà

delete è una keyword. Tornerà a essere un caso d'uso raro: nella maggior parte dei casi vorrai produrre un nuovo oggetto senza quella chiave (lo vedremo con lo spread).

Shorthand: chiavi che si chiamano come la variabile

Quando il nome della chiave coincide con quello della variabile, puoi omettere la duplicazione:

JS
const nome = 'Anna';
const eta = 28;

const u1 = { nome: nome, eta: eta }; // forma esplicita
const u2 = { nome, eta }; // shorthand, equivalente

Controllare la presenza di una proprietà

Tre opzioni, in ordine di preferenza:

JS
'nome' in utente; // true   ← operatore in
utente.nome !== undefined; // true   ← funziona quasi sempre
Object.hasOwn(utente, 'nome'); // true   ← moderno, sicuro

Prova tu

Esercizio#js.m3.l2.e1
Tentativi: 0Caricamento…

Crea l'oggetto user = { name: 'Sara', age: 22 }, poi aggiungi la proprietà 'active' a true e restituisci l'oggetto come ultima espressione.

Caricamento editor…
Mostra suggerimento

Puoi aggiungere proprietà a posteriori con la dot notation.

Soluzione disponibile dopo 3 tentativi

Esercizio di ripasso

Esercizio#js.m3.l2.e2
Tentativi: 0Caricamento…

Dato `product = { code: 'A1', price: 9.9 }` e la stringa `key = 'price'`, restituisci il prezzo usando la notazione a bracket (l'ultima espressione deve valutare a 9.9).

Caricamento editor…
Mostra suggerimento

Con bracket puoi passare una variabile come chiave.

Soluzione disponibile dopo 3 tentativi