Sobes.tech
Junior

Cum să știi dacă un obiect este gol?

sobes.tech AI

Răspuns de la AI

Un obiect este considerat "gol" dacă nu are proprietăți enumerate proprii.

Metode de verificare:

  • Object.keys(): Returnează un array de șiruri care reprezintă numele proprietăților enumerate proprii ale obiectului. Dacă array-ul este gol, obiectul este gol.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Obiectul este gol
    }
    
  • for...in și hasOwnProperty(): Iterează peste proprietățile enumerate ale obiectului (inclusiv cele moștenite) și verifică dacă proprietatea este proprie.

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

    Object.prototype.hasOwnProperty.call() este folosit pentru o verificare mai sigură, deoarece hasOwnProperty poate fi suprascris pe obiect.

  • JSON.stringify(): Transformă obiectul într-un șir JSON. Obiectul gol {} devine șirul "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Obiectul este gol
    }
    

    Acest metodă este potrivită pentru obiecte simple fără funcții și referințe ciclice.

  • Object.getOwnPropertyNames(): Returnează un array cu toate proprietățile proprii (nemoștenite), enumerate și neenumerate (inclusiv simboluri).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Obiectul este gol
    }
    
  • Object.getOwnPropertySymbols(): Returnează un array cu toate proprietățile simbolice proprii ale obiectului. Dacă obiectul este gol (și nu are proprietăți simbolice), acest array va fi gol.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Obiectul este gol, inclusiv proprietățile simbolice
    }
    

Alegerea metodei depinde de context și de cerințele de performanță. Object.keys() și JSON.stringify() sunt de obicei cele mai rapide și concise pentru cazuri simple. Pentru a lua în considerare toate tipurile de proprietăți și proprietățile moștenite, pot fi necesare verificări suplimentare.