Wie man prüft, ob ein Objekt in JavaScript leer ist
Ethan Miller
Product Engineer · Leapcell

Key Takeaways
- Verwenden Sie
Object.keys(obj).length === 0
als die zuverlässigste Methode, um auf Leerheit zu prüfen. - Validieren Sie immer, dass die Eingabe ein Non-Null-Objekt ist, bevor Sie prüfen.
- Vermeiden Sie die Verwendung von
JSON.stringify()
aufgrund von Bedenken hinsichtlich Leistung und Zuverlässigkeit.
Bei der Arbeit mit JavaScript ist es üblich, auf Situationen zu stoßen, in denen Sie feststellen müssen, ob ein Objekt leer ist – das heißt, keine eigenen Eigenschaften hat. Zu wissen, wie man diese Prüfung genau durchführt, ist unerlässlich, um robusten und fehlerfreien Code zu schreiben. In diesem Artikel werden wir verschiedene Methoden zur Prüfung, ob ein Objekt leer ist, untersuchen und wann man welche verwendet.
Was bedeutet „Leer“?
Ein Objekt gilt als „leer“, wenn es keine aufzählbaren eigenen Eigenschaften hat. Zum Beispiel:
const obj = {};
Dieses Objekt ist leer, während das folgende es nicht ist:
const obj = { name: "Alice" };
Methode 1: Verwenden von Object.keys()
Die gebräuchlichste und zuverlässigste Methode ist die Verwendung von Object.keys()
:
function isEmpty(obj) { return Object.keys(obj).length === 0; }
Diese Methode gibt ein Array der Namen der eigenen Eigenschaften des Objekts zurück. Wenn die Länge Null ist, ist das Objekt leer.
Beispiel:
isEmpty({}); // true isEmpty({ a: 1 }); // false
Methode 2: Verwenden von Object.entries()
Sie können auch Object.entries()
verwenden, das ein Array von Schlüssel-Wert-Paaren zurückgibt:
function isEmpty(obj) { return Object.entries(obj).length === 0; }
Diese Methode ist ebenso gültig und verhält sich ähnlich wie Object.keys()
.
Methode 3: JSON-String-Vergleich (Nicht empfohlen)
Einige Entwickler verwenden JSON-Serialisierung zum Vergleichen:
function isEmpty(obj) { return JSON.stringify(obj) === "{}"; }
Obwohl dies in den meisten Fällen funktioniert, wird es im Allgemeinen aufgrund von Leistungsproblemen und potenziellen Randfällen mit nicht serialisierbaren Eigenschaften wie Funktionen oder zirkulären Referenzen nicht empfohlen.
Methode 4: Manuelle Iteration mit for...in
Sie können auch manuell durch Eigenschaften iterieren:
function isEmpty(obj) { for (let key in obj) { if (obj.hasOwnProperty(key)) { return false; } } return true; }
Diese Methode ist sicher und vermeidet Prototyp-Eigenschaften, ist aber ausführlicher.
Caveat: Null und Nicht-Objekte
Achten Sie darauf, zu prüfen, ob der Wert tatsächlich ein Objekt und nicht null
ist, was in JavaScript auch technisch gesehen ein Objekt ist:
function isEmpty(obj) { return obj && typeof obj === "object" && Object.keys(obj).length === 0; }
Fazit
Der zuverlässigste und prägnanteste Weg, um zu prüfen, ob ein Objekt im modernen JavaScript leer ist, ist die Verwendung von Object.keys(obj).length === 0
. Stellen Sie immer sicher, dass der Wert wirklich ein Objekt und nicht null
oder ein anderer Datentyp ist, um Laufzeitfehler zu vermeiden.
Zusammenfassungstabelle
Methode | Empfohlen | Hinweise |
---|---|---|
Object.keys().length | ✅ | Einfach und schnell für die meisten Anwendungsfälle |
Object.entries().length | ✅ | Gleichwertige Alternative |
JSON.stringify() | ❌ | Nicht performant oder sicher für alle Eingaben |
for...in loop | ✅ | Sicher, aber ausführlicher |
Indem Sie diese Ansätze verstehen, können Sie selbstbewusst Code schreiben, der leere Objekte in jeder JavaScript-Umgebung korrekt verarbeitet.
FAQs
Ja, sie ist effizient und wird in modernen JavaScript-Engines weitgehend unterstützt.
Sie sollten eine Typüberprüfung hinzufügen, um sicherzustellen, dass es sich um ein Non-Null-Objekt handelt, bevor Sie seine Schlüssel auswerten.
Dies kann bei Objekten mit nicht serialisierbaren Eigenschaften fehlschlagen und ist weniger performant.
Wir sind Leapcell, Ihre erste Wahl für das Hosten von Node.js-Projekten.
Leapcell ist die Serverlose Next-Gen-Plattform für Webhosting, asynchrone Aufgaben und Redis:
Multi-Sprachen-Unterstützung
- Entwickeln Sie mit Node.js, Python, Go oder Rust.
Stellen Sie unbegrenzt Projekte kostenlos bereit
- zahlen Sie nur für die Nutzung – keine Anfragen, keine Gebühren.
Unschlagbare Kosteneffizienz
- Pay-as-you-go ohne Leerlaufgebühren.
- Beispiel: 25 $ unterstützen 6,94 Mio. Anfragen bei einer durchschnittlichen Antwortzeit von 60 ms.
Optimierte Entwicklererfahrung
- Intuitive Benutzeroberfläche für mühelose Einrichtung.
- Vollautomatische CI/CD-Pipelines und GitOps-Integration.
- Echtzeitmetriken und -protokollierung für verwertbare Erkenntnisse.
Mühelose Skalierbarkeit und hohe Leistung
- Auto-Skalierung zur einfachen Bewältigung hoher Parallelität.
- Kein operativer Aufwand – konzentrieren Sie sich einfach auf das Bauen.
Erfahren Sie mehr in der Dokumentation!
Folgen Sie uns auf X: @LeapcellHQ