JavaScript-objecten, en waarom u [object Object] ziet

Gids JavaScript-objecten

JavaScript-objecten: keys, kopieën en [object Object] opgelost | We.Inc

Maak, lees, doorloop en kopieer JavaScript-objecten, en ontdek waarom uw pagina [object Object] toont en hoe u de echte waarde laat zien. Plak willekeurige JSON om die live te inspecteren.

Een JavaScript-object is een verzameling benoemde waarden, geschreven als { key: value }. U leest een waarde met obj.key of obj['key'], toont de keys met Object.keys en de paren met Object.entries. De tekst [object Object] verschijnt als een object in een string wordt omgezet; gebruik JSON.stringify(obj) om de inhoud te tonen.

Taken met objecten in één oogopslag

Objecten zijn de vorm waarin bijna elke API-response, elk configuratiebestand en elke React-prop binnenkomt. Deze gids behandelt de handvol bewerkingen die u dagelijks gebruikt en gaat daarna in op de twee klassieke verrassingen: [object Object] dat in de pagina of een alert verschijnt, en een kopie die stiekem geneste data deelt met het origineel.

Veelgestelde vragen

Waarom toont mijn code [object Object]?

Iets heeft het object naar een string omgezet: een + met tekst, een template literal, een alert, element.textContent of innerText. De standaard-toString van gewone objecten geeft de vaste tekst [object Object]. Toon in plaats daarvan JSON.stringify(obj), of kies de property die u bedoelde, zoals obj.name.

Hoe doorloop ik een object in JavaScript?

Gebruik for (const [key, value] of Object.entries(obj)) { ... }. Een gewoon object is niet iterable, dus for...of er direct op gooit een TypeError. for...in werkt ook, maar neemt geërfde enumerable keys mee.

Hoe kopieer ik een object zonder dat het aan het origineel gekoppeld blijft?

Voor een plat object volstaat { ...obj } of Object.assign({}, obj). Bevat het object geneste objecten of arrays, gebruik dan structuredClone(obj), dat elk niveau kopieert. Het kan overweg met Dates, Maps en Sets, maar gooit een DataCloneError bij functies en DOM-nodes.

Hoe zet ik een object om in een array en weer terug?

Object.entries(obj) geeft een array met [key, value]-paren. Bewerk die met map of filter en bouw daarna weer een object met Object.fromEntries(pairs). Dit is de gebruikelijke manier om over de waarden van een object te mappen.

Wat is het verschil tussen een object en een Map?

Een Map accepteert elk type als key, onthoudt de invoegvolgorde van alle keys en heeft een size-property. Gewone objecten gebruiken string- of symbol-keys en zijn wat JSON oplevert. Let op: JSON.stringify maakt van een Map {}, zet hem dus eerst om met Object.fromEntries(map).

Puntnotatie versus haakjes

Ondiepe en diepe kopieën

De echte waarde tonen in plaats van [object Object]

Vier manieren om een object te tonen

Alleen de eerste regel geeft [object Object]. De andere tonen leesbare inhoud.

Netjes opgemaakt tonen in de pagina

Een pre-element behoudt de regeleinden en inspringing die JSON.stringify met zijn derde argument toevoegt.

Objecten omvormen met entries en fromEntries

Btw toevoegen aan elke prijs

entries zet het object om in paren, map wijzigt elke waarde, fromEntries bouwt een nieuw object.

Spread versus structuredClone

De spread-kopie deelt het binnenste address-object; de clone niet.

Objectinspector

Bewerk de JSON en zie hoe elke aanpak hem omzet in tekst of een lijst.

Uw object als JSON

Geen geldige JSON: {v}

Dat is geldige JSON, maar geen object. Zet het tussen accolades.

Manieren om het object te tonen

Code

Output

Kopieerexperiment

Wijzig de stad op een kopie en kijk daarna of het origineel ook veranderde.

Nieuwe stad voor de kopie

Wijzig op een spread-kopie

Wijzig op een structuredClone-kopie

Herstellen

original.address.city is nu {v}

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap