Nach einer AJAX-Anfrage kann es vorkommen, dass meine Anwendung ein leeres Objekt zurückgibt, z. B.:
var a = {};
Wie kann ich überprüfen, ob das der Fall ist?
Nach einer AJAX-Anfrage kann es vorkommen, dass meine Anwendung ein leeres Objekt zurückgibt, z. B.:
var a = {};
Wie kann ich überprüfen, ob das der Fall ist?
Ich verwende dies.
function isObjectEmpty(object) {
var isEmpty = true;
for (keys in object) {
isEmpty = false;
break; // exiting since we found that the object is not empty
}
return isEmpty;
}
Beispiel:
var myObject = {}; // Object is empty
var isEmpty = isObjectEmpty(myObject); // will return true;
// populating the object
myObject = {"name":"John Smith","Address":"Kochi, Kerala"};
// check if the object is empty
isEmpty = isObjectEmpty(myObject); // will return false;
更新情報
OR
können Sie die jQuery-Implementierung von isEmptyObject verwenden
function isEmptyObject(obj) {
var name;
for (name in obj) {
return false;
}
return true;
}
Hallo. Wenn Sie diese Funktion mit einer Zahl oder einem booleschen Wert testen, wird true oder false zurückgegeben, und das ist nicht das richtige Ergebnis. isObjectEmpty(true). isObjectEmpty(false). isObjectEmpty(1)
Nur ein Workaround. Kann Ihr Server eine spezielle Eigenschaft erzeugen, wenn keine Daten vorhanden sind?
Zum Beispiel:
var a = {empty:true};
Dann können Sie sie leicht in Ihrem AJAX-Callback-Code überprüfen.
Eine andere Möglichkeit zur Überprüfung:
if (a.toSource() === "({})") // then 'a' is empty
EDITAR : Wenn Sie eine JSON-Bibliothek (z.B. JSON.js) verwenden, können Sie die Funktion JSON.encode() ausprobieren und das Ergebnis mit einem leeren Wertstring testen.
toSource()
ist nicht standardisiert und funktioniert nicht in IE oder Opera (und möglicherweise anderen Browsern, die ich nicht überprüft habe)
@Thevs: Vielleicht haben Sie ein anderes Exemplar der aktuellen Version von ECMA-262, aber in meinem ist keine toSource
Eigenschaft in Abschnitt 15.2.4; laut MDC wurde sie in JS1.3 (d.h. Netscape Navigator 4.06) eingeführt, aber sie ist NICHT in ECMA-262, 3. Ausgabe!
Object.keys gibt ein Array zurück, das die Eigenschaftsnamen des Objekts enthält. Wenn die Länge des Arrays 0 ist, dann wissen wir, dass das Objekt leer ist.
function isEmpty(obj) {
return Object.keys(obj).length === 0 && empty.constructor === Object;
}
Wir können dies auch mit Object.values und Object.entries überprüfen. Dies ist normalerweise der einfachste Weg, um festzustellen, ob ein Objekt leer ist.
Die for in-Anweisung durchläuft die aufzählbare Eigenschaft von object in einer Schleife.
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return true;
}
Im obigen Code durchlaufen wir die Objekteigenschaften in einer Schleife, und wenn ein Objekt mindestens eine Eigenschaft hat, wird es in die Schleife aufgenommen und gibt false zurück. Wenn das Objekt keine Eigenschaften hat, wird true zurückgegeben.
function isEmptyObject(obj){
return JSON.stringify(obj) === '{}';
}
jQuery.isEmptyObject(obj);
_.isEmpty(obj);
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.