Ako zistiť, či je objekt prázdny?
sobes.tech AI
Odpoveď od AI
Objekt sa považuje za "prázdny", ak nemá vlastné enumerovateľné vlastnosti.
Spôsoby kontroly:
-
Object.keys(): Vráti pole reťazcov predstavujúcich názvy enumerovateľných vlastností objektu. Ak je pole prázdne, objekt je prázdny.const myObject = {}; if (Object.keys(myObject).length === 0) { // Objekt je prázdny } -
for...inahasOwnProperty(): Iteruje cez enumerovateľné vlastnosti objektu (vrátane zdedených) a kontroluje, či je vlastnosť vlastná.const myObject = {}; let isEmpty = true; for (const key in myObject) { if (Object.prototype.hasOwnProperty.call(myObject, key)) { isEmpty = false; break; } } if (isEmpty) { // Objekt je prázdny }Object.prototype.hasOwnProperty.call()sa používa na bezpečnejšiu kontrolu, pretožehasOwnPropertymohlo byť prepísané na objekte. -
JSON.stringify(): Prevodí objekt na reťazec JSON. Prázdny objekt{}sa prevedie na reťazec"{}"const myObject = {}; if (JSON.stringify(myObject) === '{}') { // Objekt je prázdny }Tento spôsob je vhodný pre jednoduché objekty bez funkcií a cyklických odkazov.
-
Object.getOwnPropertyNames(): Vráti pole všetkých vlastných (nezdedených) neenumerovateľných a enumerovateľných vlastností (vrátane symbolov).const myObject = {}; if (Object.getOwnPropertyNames(myObject).length === 0) { // Objekt je prázdny } -
Object.getOwnPropertySymbols(): Vráti pole všetkých vlastných symbolových vlastností objektu. Ak je objekt prázdny (a nemá symbolové vlastnosti), toto pole bude prázdne.const myObject = {}; if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) { // Objekt je prázdny, vrátane symbolových vlastností }
Výber metódy závisí od kontextu a požiadaviek na výkon. Object.keys() a JSON.stringify() sú zvyčajne najrýchlejšie a najstručnejšie pre jednoduché prípady. Pre zohľadnenie všetkých typov vlastností a zdedených vlastností môžu byť potrebné ďalšie kontroly.