Hoe weet je of een object leeg is?
sobes.tech AI
Antwoord van AI
Een object wordt als "leeg" beschouwd als het geen eigen enumerateerbare eigenschappen heeft.
Manieren om te controleren:
-
Object.keys(): Geeft een array van strings die de namen van de eigen enumerateerbare eigenschappen van het object vertegenwoordigen. Als de array leeg is, is het object leeg.const myObject = {}; if (Object.keys(myObject).length === 0) { // Object is leeg } -
for...inenhasOwnProperty(): Itereert over de enumerateerbare eigenschappen van het object (inclusief geërfde) en controleert of de eigenschap eigen is.const myObject = {}; let isEmpty = true; for (const key in myObject) { if (Object.prototype.hasOwnProperty.call(myObject, key)) { isEmpty = false; break; } } if (isEmpty) { // Object is leeg }Object.prototype.hasOwnProperty.call()wordt gebruikt voor een veiligere controle, omdathasOwnPropertyop het object overschreven kan zijn. -
JSON.stringify(): Zet het object om in een JSON-string. Een leeg object{}wordt omgezet in de string"{}"const myObject = {}; if (JSON.stringify(myObject) === '{}') { // Object is leeg }Deze methode is geschikt voor eenvoudige objecten zonder functies en circulaire referenties.
-
Object.getOwnPropertyNames(): Geeft een array van alle eigen (niet geërfde), enumerateerbare en niet-enumerateerbare eigenschappen (inclusief symbolen).const myObject = {}; if (Object.getOwnPropertyNames(myObject).length === 0) { // Object is leeg } -
Object.getOwnPropertySymbols(): Geeft een array van alle eigen symbolische eigenschappen van het object. Als het object leeg is (en geen symbolische eigenschappen heeft), zal deze array leeg zijn.const myObject = {}; if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) { // Object is leeg, inclusief symbolische eigenschappen }
De keuze van de methode hangt af van de context en de prestatie-eisen. Object.keys() en JSON.stringify() zijn meestal het snelst en meest beknopt voor eenvoudige gevallen. Voor het rekening houden met alle typen eigenschappen en geërfde eigenschappen kunnen aanvullende controles nodig zijn.