Sobes.tech
Junior

Hoe weet je of een object leeg is?

sobes.tech AI

Antwoord van AI

Een object wordt als "leeg" beschouwd als het geen eigen enumerateerbare eigenschappen heeft.

Manieren om te controleren:

  • Object.keys(): Geeft een array van strings die de namen van de eigen enumerateerbare eigenschappen van het object vertegenwoordigen. Als de array leeg is, is het object leeg.

    const myObject = {};
    if (Object.keys(myObject).length === 0) {
      // Object is leeg
    }
    
  • for...in en hasOwnProperty(): Itereert over de enumerateerbare eigenschappen van het object (inclusief geërfde) en controleert of de eigenschap eigen is.

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

    Object.prototype.hasOwnProperty.call() wordt gebruikt voor een veiligere controle, omdat hasOwnProperty op het object overschreven kan zijn.

  • JSON.stringify(): Zet het object om in een JSON-string. Een leeg object {} wordt omgezet in de string "{}"

    const myObject = {};
    if (JSON.stringify(myObject) === '{}') {
      // Object is leeg
    }
    

    Deze methode is geschikt voor eenvoudige objecten zonder functies en circulaire referenties.

  • Object.getOwnPropertyNames(): Geeft een array van alle eigen (niet geërfde), enumerateerbare en niet-enumerateerbare eigenschappen (inclusief symbolen).

    const myObject = {};
    if (Object.getOwnPropertyNames(myObject).length === 0) {
      // Object is leeg
    }
    
  • Object.getOwnPropertySymbols(): Geeft een array van alle eigen symbolische eigenschappen van het object. Als het object leeg is (en geen symbolische eigenschappen heeft), zal deze array leeg zijn.

    const myObject = {};
    if (Object.getOwnPropertySymbols(myObject).length === 0 && Object.getOwnPropertyNames(myObject).length === 0) {
        // Object is leeg, inclusief symbolische eigenschappen
    }
    

De keuze van de methode hangt af van de context en de prestatie-eisen. Object.keys() en JSON.stringify() zijn meestal het snelst en meest beknopt voor eenvoudige gevallen. Voor het rekening houden met alle typen eigenschappen en geërfde eigenschappen kunnen aanvullende controles nodig zijn.