Sobes.tech
Junior

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...in a hasOwnProperty(): 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že hasOwnProperty mohlo 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.