Sobes.tech
Junior

Kuidas teada saada, kas objekt on tühi?

sobes.tech AI

Vastus AI-lt

Objekt loetakse "tühjaks", kui sellel puuduvad oma loetavad omadused.

Kontrollimise viisid:

  • Object.keys(): Tagastab stringide massiivi, mis esindab objekti loetavate omaduste nimesid. Kui massiiv on tühi, on objekt tühi.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Objekt on tühi
    }
    
  • for...in ja hasOwnProperty(): Itereerib objekti loetavate omaduste (ka pärandatud) üle ja kontrollib, kas omadus on objekti oma.

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Objekt on tühi
    }
    

    Object.prototype.hasOwnProperty.call() kasutatakse turvalisemaks kontrolliks, kuna hasOwnProperty võib olla üle kirjutatud.

  • JSON.stringify(): Muudab objekti JSON-stringiks. Tühi objekt {} muudetakse stringiks "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Objekt on tühi
    }
    

    See meetod sobib lihtsate objektide jaoks, millel pole funktsioone ega tsüklilisi viiteid.

  • Object.getOwnPropertyNames(): Tagastab kõigi oma (mitte pärandatud) ja mitte-loetavate ning loetavate omaduste nimede massiivi (ka sümbolid).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Objekt on tühi
    }
    
  • Object.getOwnPropertySymbols(): Tagastab kõigi oma sümbolsete omaduste massiivi. Kui objekt on tühi (ja tal pole sümbolseid omadusi), on see massiiv tühi.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Objekt on tühi, kaasa arvatud sümbolid
    }
    

Valik sõltub kontekstist ja jõudluse nõuetest. Object.keys() ja JSON.stringify() on tavaliselt kõige kiirem ja lühim viis lihtsate juhtumite jaoks. Kõigi omaduste ja pärandatud omaduste arvestamiseks võivad olla vajalikud täiendavad kontrollid.