web-dev-qa-db-fra.com

Vérifier si l'objet est vide avec JavaScript/jQuery

J'ai un objet comme ça:

ricHistory = {
  name1: [{
    test1: value1,
    test2: value2,
    test3: value3
  }],
  name2: [{
    test1: value1,
    test2: value2,
    test3: value3
  }]
};

Maintenant, je veux vérifier si par exemple name2 est vide avec Javascript/jQuery. Je connais la méthode hasOwnProperty. Cela fonctionne pour data.hasOwnProperty('name2') seulement si le nom existe ou non, mais je dois vérifier si c'est vide.

20
Artpixler

Essaye ça:

if (ricHistory.name2 && 
    ricHistory.name2 instanceof Array &&
    !ricHistory.name2.length) {
   console.log('name2 is empty array');
} else {
   console.log('name2 does not exists or is not an empty array.');
}

La solution ci-dessus vous indiquera si richHistory.name2 existe, est un tableau et qu'il n'est pas vide.

7
Minko Gechev

vous pouvez le faire par jQuery.isEmptyObject()

Vérifiez si un objet est vide (ne contient aucune propriété).

jQuery.isEmptyObject( object )

Exemple:

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

de Jquery

63
NullPoiиteя

Une autre syntaxe de JQuery, à savoir que vous n’utilisez pas Prototype ou similaire et que vous préférez utiliser $ plutôt que le préfixe jQuery;

$.isEmptyObject( object )
7
burakakkor

Essayez cette fonction utile:

function isEmpty(obj) {
if(isSet(obj)) {
    if (obj.length && obj.length > 0) { 
        return false;
    }

    for (var key in obj) {
        if (hasOwnProperty.call(obj, key)) {
            return false;
        }
    }
}
return true;    
};

function isSet(val) {
if ((val != undefined) && (val != null)){
    return true;
}
return false;
};
4
stamat

Je vais comme ça tout le temps dans mon code:

Supposons que mon contrôleur retourne quelque chose comme ci-dessous:

$return['divostar'] = $this->report->get_additional_divostar_report($data);
$return['success'] = true;
return response()->json($return);

Dans Jquery, je voudrais vérifier comme ci-dessous:

if (jQuery.isEmptyObject(data.divostar)){
      html_result = "<p id='report'>No report yet</p>";
      $('#no_report_table').html(html_result).fadeIn('fast');
} 
2
Fokwa Best

Sale mais simple et fonctionne: 

function isEmptyObject(obj) {
  return JSON.stringify(obj) == '{}';
}
1
elixon

Vous pouvez raccourcir isSet en faisant ceci à la place:

function isSet(val) { return ((val != undefined) && (val != null));}

Je trouve plus facile de simplement renvoyer le booléen de la déclaration au lieu de le remettre, puis de le retourner.

0
Rogala