528 Stimmen

Ist das Objekt leer?

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;
}

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.

0voto

link0047 Punkte 103

Das ist ein guter Weg, es zu tun

function isEmpty(obj) {
  if (Array.isArray(obj)) {
    return obj.length === 0;
  } else if (typeof obj === 'object') {
    for (var i in obj) {
      return false;
    }
    return true;
  } else {
    return !obj;
  }
}

-1voto

Vladimir Gordienko Punkte 3040

Hier meine Lösung

function isEmpty(value) {
    if(Object.prototype.toString.call(value) === '[object Array]') {
        return value.length == 0;
    } else if(value != null && typeof value === 'object') {
        return Object.getOwnPropertyNames(value).length  == 0;
    } else {
        return !(value || (value === 0));
    }
}

Chears

-2voto

Gimhan Punkte 62
if (Object.getOwnPropertyNames(obj1).length > 0)
{
 alert('obj1 is empty!');
}

13 Stimmen

Müsste die Logik nicht umgekehrt sein?

1 Stimmen

Ja, richtiger wäre es Object.getOwnPropertyNames(obj1).length < 1 . Die Antwort, wie sie geschrieben ist, funktioniert nicht.

CodeJaeger.com

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.

Powered by:

X