Wie kann man am schnellsten prüfen, ob ein Objekt leer ist oder nicht?
Gibt es einen schnelleren und besseren Weg als diesen?
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
Wie kann man am schnellsten prüfen, ob ein Objekt leer ist oder nicht?
Gibt es einen schnelleren und besseren Weg als diesen?
function count_obj(obj){
var i = 0;
for(var key in obj){
++i;
}
return i;
}
Eine Bibliothek ist nicht erforderlich.
function(){ //must be within a function
var obj = {}; //the object to test
for(var isNotEmpty in obj) //will loop through once if there is a property of some sort, then
return alert('not empty')//what ever you are trying to do once
return alert('empty'); //nope obj was empty do this instead;
}
Wenn es sich bei den Daten nicht um ein Objekt handelt, könnte dies zu einem falsch positiven Ergebnis für JSON.stringify([])
o JSON.stringify("")
o JSON.stringify(42)
. Das ist alles, was ich habe.
Ich denke auch, dass die Leistung schlechter sein könnte als bei einer anderen Methode. Und JSON.stringify ist nicht in jedem Browser verfügbar
+1 Ausgezeichnete Antwort + das ist eine superschnelle Lösung !!! Ignorieren Sie die anderen Kommentare, wenn Ihre Anwendung auf moderne Webbrowser-Engines verweist.
Ich denke, das wird eine bessere Leistung haben: isEmpty = function(a,b){for(b in a){break}return !b};
Ich verstehe nicht, warum break, return !b besser sein soll als return false/return true? break und !b erfordern beide eine zusätzliche "Operation". Ein kleines Detail ist, dass b keine Eingabevariable sein sollte, sondern innerhalb der Funktion definiert wird; for (var b in a)... tut dies, auch wenn a 'leer' ist
Sie können einen Fallback schreiben, wenn Array.isArray und Object.getOwnPropertyNames nicht verfügbar sind
XX.isEmpty = function(a){
if(Array.isArray(a)){
return (a.length==0);
}
if(!a){
return true;
}
if(a instanceof Object){
if(a instanceof Date){
return false;
}
if(Object.getOwnPropertyNames(a).length == 0){
return true;
}
}
return false;
}
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.
6 Stimmen
Möchten Sie die Eigenschaften zählen (das ist es, was der Code tut) oder nur testen, ob das Objekt leer ist oder nicht (das ist in Ihrer Frage angegeben)?
2 Stimmen
Nur als Empfehlung von Bibliotheken, die dazu in der Lage sind is.js y lodash
0 Stimmen
Für derartige Dienstprogramme empfiehlt es sich, einige Bibliotheken zu verwenden. Sie könnten lodash verwenden und etwas wie
_.isEmpty(_.keys(yourObject))
. Und ich glaube, Sie können jetzt diese beiden Methoden einzeln importieren, und nicht die gesamte Lodash-Bibliothek.