Oggetti JavaScript, e Perché Vedi [object Object]

Guida agli Oggetti JavaScript

Oggetti JavaScript: Chiavi, Copie e [object Object] Risolto | We.Inc

Crea, leggi, scorri e copia oggetti JavaScript, e scopri perché la tua pagina stampa [object Object] e come mostrare il valore reale. Incolla qualsiasi JSON per esaminarlo dal vivo.

Un oggetto JavaScript è un insieme di valori con nome scritto come { key: value }. Leggi un valore con obj.key o obj['key'], elenchi le chiavi con Object.keys e le coppie con Object.entries. Il testo [object Object] compare quando un oggetto viene convertito in stringa; usa JSON.stringify(obj) per stamparne il contenuto.

Operazioni sugli oggetti in breve

Gli oggetti sono la forma in cui arrivano quasi tutte le risposte delle API, i file di configurazione e le prop di React. Questa guida copre le poche operazioni che usi ogni giorno, poi affronta le due sorprese classiche: [object Object] che compare nella pagina o in un alert, e una copia che condivide di nascosto i dati annidati con l'originale.

Domande frequenti

Perché il mio codice stampa [object Object]?

Qualcosa ha convertito l'oggetto in stringa: un + con del testo, un template literal, un alert, element.textContent o innerText. Il toString predefinito degli oggetti semplici restituisce il testo fisso [object Object]. Stampa invece JSON.stringify(obj), oppure scegli la proprietà che intendevi, come obj.name.

Come scorro un oggetto in JavaScript?

Usa for (const [key, value] of Object.entries(obj)) { ... }. Un oggetto semplice non è iterabile, quindi un for...of usato direttamente su di esso lancia un TypeError. Funziona anche for...in, ma include le chiavi enumerabili ereditate.

Come copio un oggetto senza legarlo all'originale?

Per un oggetto piatto basta { ...obj } o Object.assign({}, obj). Se l'oggetto contiene oggetti o array annidati, usa structuredClone(obj), che copia ogni livello. Gestisce Date, Map e Set ma lancia un DataCloneError su funzioni e nodi DOM.

Come trasformo un oggetto in un array e viceversa?

Object.entries(obj) dà un array di coppie [key, value]. Trasformalo con map o filter, poi ricostruisci un oggetto con Object.fromEntries(pairs). È il modo abituale per applicare map ai valori di un oggetto.

Qual è la differenza tra un oggetto e una Map?

Una Map accetta qualsiasi tipo come chiave, ricorda l'ordine di inserimento di tutte le chiavi e ha una proprietà size. Gli oggetti semplici usano chiavi stringa o symbol e sono ciò che produce il JSON. Nota che JSON.stringify trasforma una Map in {}, quindi convertila prima con Object.fromEntries(map).

Notazione con il punto o con le parentesi quadre

Copie superficiali e profonde

Mostrare il valore reale invece di [object Object]

Quattro modi per visualizzare un oggetto

Solo la prima riga produce [object Object]. Le altre stampano un contenuto leggibile.

Stampa formattata dentro la pagina

Un elemento pre mantiene gli a capo e il rientro che JSON.stringify aggiunge con il terzo argomento.

Trasformare oggetti con entries e fromEntries

Aggiungere le tasse a ogni prezzo

entries trasforma l'oggetto in coppie, map cambia ogni valore, fromEntries costruisce un nuovo oggetto.

Spread o structuredClone

La copia con lo spread condivide l'oggetto address interno; il clone no.

Ispettore di oggetti

Modifica il JSON e guarda come ogni approccio lo trasforma in testo o in una lista.

Il tuo oggetto come JSON

JSON non valido: {v}

È un JSON valido ma non un oggetto. Racchiudilo tra parentesi graffe.

Modi per visualizzare l'oggetto

Codice

Output

Esperimento sulle copie

Cambia la città su una copia, poi controlla se è cambiato anche l'originale.

Nuova città per la copia

Cambiala su una copia con spread

Cambiala su una copia con structuredClone

Ripristina

original.address.city ora è {v}

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito