Sobes.tech
Junior

Hogyan lehet megtudni, hogy egy objektum üres-e?

sobes.tech MI

Válasz az MI-től

Egy objektum "üres"nak tekinthető, ha nincs saját felsorolható tulajdonsága.

Ellenőrzési módszerek:

  • Object.keys(): Visszaad egy tömböt, amely az objektum felsorolható saját tulajdonságainak neveit tartalmazza. Ha a tömb üres, az objektum üres.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Az objektum üres
    }
    
  • for...in és hasOwnProperty(): Iterál az objektum felsorolható tulajdonságain (beleértve az öröklöttet is), és ellenőrzi, hogy a tulajdonság saját-e.

    const myObject = {};
    let isEmpty = true;
    for (const key in myObject) {
      if (Object.prototype.hasOwnProperty.call(myObject, key)) {
        isEmpty = false;
        break;
      }
    }
    if (isEmpty) {
      // Az objektum üres
    }
    

    Az Object.prototype.hasOwnProperty.call() biztonságosabb ellenőrzéshez van, mivel a hasOwnProperty felülíródhat az objektumon.

  • JSON.stringify(): Átalakítja az objektumot JSON sztringgé. Egy üres {} objektum a "{}" sztringgé alakul.

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Az objektum üres
    }
    

    Ez a módszer alkalmas egyszerű objektumokra, funkciók és ciklikus hivatkozások nélkül.

  • Object.getOwnPropertyNames(): Visszaad egy tömböt az összes saját (nem öröklött), felsorolható és nem felsorolható tulajdonságról (beleértve a szimbólumokat is).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Az objektum üres
    }
    
  • Object.getOwnPropertySymbols(): Visszaad egy tömböt az összes saját szimbólum tulajdonságról az objektumban. Ha az objektum üres (és nincs szimbólum tulajdonsága), ez a tömb üres lesz.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Az objektum üres, beleértve a szimbólumokat is
    }
    

A módszer kiválasztása a kontextustól és a teljesítményigényektől függ. A Object.keys() és a JSON.stringify() általában a leggyorsabb és legkoncisebb egyszerű esetekben. Az összes tulajdonságtípus és öröklött tulajdonság figyelembevételéhez további ellenőrzések lehetnek szükségesek.