Πώς μπορώ να ελέγξω για ένα κενό αντικείμενο JavaScript;

Μετά από μια αίτηση AJAX, μερικές φορές η εφαρμογή μου μπορεί να επιστρέψει ένα κενό αντικείμενο, όπως:

var a = {};

Πώς μπορώ να ελέγξω αν συμβαίνει αυτό;

Δεν υπάρχει εύκολος τρόπος για να γίνει αυτό. Θα πρέπει να κάνετε βρόχο στις ιδιότητες ρητά:

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

Εάν υπάρχει υποστήριξη του ECMAScript 5, μπορείτε να χρησιμοποιήσετε την Object.keys() αντί γι' αυτό:

function isEmpty(obj) {
    return Object.keys(obj).length === 0;
}
Σχόλια (16)
  1. Απλά μια λύση. Μπορεί ο διακομιστής σας να δημιουργήσει κάποια ειδική ιδιότητα σε περίπτωση που δεν υπάρχουν δεδομένα;

Για παράδειγμα:

    var a = {empty:true},

Στη συνέχεια, μπορείτε εύκολα να το ελέγξετε στον κώδικα επανάκλησης AJAX.

  1. Ένας άλλος τρόπος για να το ελέγξετε:

     "({})")  // then 'a' is empty

EDIT: Εάν χρησιμοποιείτε οποιαδήποτε βιβλιοθήκη JSON (π.χ. JSON.js), τότε μπορείτε να δοκιμάσετε τη συνάρτηση JSON.encode() και να ελέγξετε το αποτέλεσμα έναντι κενής συμβολοσειράς τιμών.

Σχόλια (11)
function isEmpty(obj) {
  for(var i in obj) { return false; }
  return true;
}
Σχόλια (1)