Sobes.tech
Junior

Kako saznati da li je objekat prazan?

sobes.tech АИ

Одговор од АИ

Objekat se smatra "praznim" ako nema sopstvena svojstva koja se mogu nabrojati.

Načini provere:

  • Object.keys(): Vraća niz stringova koji predstavljaju imena svojstava koja se mogu nabrojati na objektu. Ako je niz prazan, objekat je prazan.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Objekat je prazan
    }
    
  • for...in i hasOwnProperty(): Iterira kroz svojstva koja se mogu nabrojati na objektu (uključujući nasledna) i proverava da li je svojstvo sopstveno.

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Objekat je prazan
    }
    

    Object.prototype.hasOwnProperty.call() se koristi za sigurniju proveru, jer hasOwnProperty može biti prepisan na objektu.

  • JSON.stringify(): Pretvara objekat u JSON niz. Prazan objekat {} se pretvara u niz "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Objekat je prazan
    }
    

    Ova metoda je pogodna za jednostavne objekte bez funkcija i cikličkih referenci.

  • Object.getOwnPropertyNames(): Vraća niz svih sopstvenih (ne nasledjenih), nabrojivih i ne nabrojivih svojstava (uključujući simbole).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Objekat je prazan
    }
    
  • Object.getOwnPropertySymbols(): Vraća niz svih sopstvenih simboličnih svojstava objekta. Ako je objekat prazan (i nema simboličkih svojstava), ovaj niz će biti prazan.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Objekat je prazan, uključujući simbolička svojstva
    }
    

Izbor metode zavisi od konteksta i zahteva za performanse. Object.keys() i JSON.stringify() su obično najbrži i najkoncizniji za jednostavne slučajeve. Za uzimanje u obzir svih tipova svojstava i naslednih svojstava, mogu biti potrebne dodatne provere.