Jak zjistit, že je objekt prázdný?
sobes.tech AI
Odpověď od AI
Objekt se považuje za "prázdný", pokud nem má žádné vlastní enumerovatelné vlastnosti.
Způsoby kontroly:
-
Object.keys(): Vrací pole řetězců představujících názvy vlastních enumerovatelných vlastností objektu. Pokud je pole prázdné, je objekt prázdný.const myObject = {}; if (Object.keys(myObject).length === 0) { // Objekt je prázdný } -
for...inahasOwnProperty(): Iteruje přes enumerovatelné vlastnosti objektu (včetně zděděných) a kontroluje, zda je vlastnost 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ázdný }Object.prototype.hasOwnProperty.call()se používá pro bezpečnější kontrolu, protožehasOwnPropertymůže být přepsáno na objektu. -
JSON.stringify(): Převádí objekt na řetězec JSON. Prázdný objekt{}se převede na řetězec"{}"const myObject = {}; if (JSON.stringify(myObject) === '{}') { // Objekt je prázdný }Tento způsob je vhodný pro jednoduché objekty bez funkcí a cyklických odkazů.
-
Object.getOwnPropertyNames(): Vrací pole všech vlastních (nezděděných), enumerovatelných a neenumerovatelných vlastností (včetně symbolů).const myObject = {}; if (Object.getOwnPropertyNames(myObject).length === 0) { // Objekt je prázdný } -
Object.getOwnPropertySymbols(): Vrací pole všech vlastních symbolických vlastností objektu. Pokud je objekt prázdný (a nemá symbolické vlastnosti), bude toto pole prázdné.const myObject = {}; if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) { // Objekt je prázdný, včetně symbolických vlastností }
Volba metody závisí na kontextu a požadavcích na výkon. Object.keys() a JSON.stringify() jsou obvykle nejrychlejší a nejvýstižnější pro jednoduché případy. Pro zohlednění všech typů vlastností a zděděných vlastností mohou být potřeba další kontroly.