Sie können einfach Folgendes verwenden Object.keys(obj).length
auf ein beliebiges Objekt, um dessen Länge zu ermitteln. Object.keys gibt ein Array mit allen Objekten zurück Tasten (Eigenschaften), was sich als nützlich erweisen kann, um die Länge dieses Objekts anhand der Länge des entsprechenden Arrays zu ermitteln. Sie können sogar eine Funktion für diese. Lassen Sie uns kreativ und schreiben eine Methode für sie als auch (zusammen mit einer bequemeren getter Eigenschaft):
function objLength(obj)
{
return Object.keys(obj).length;
}
console.log(objLength({a:1, b:"summit", c:"nonsense"}));
// Works perfectly fine
var obj = new Object();
obj['fish'] = 30;
obj['nullified content'] = null;
console.log(objLength(obj));
// It also works your way, which is creating it using the Object constructor
Object.prototype.getLength = function() {
return Object.keys(this).length;
}
console.log(obj.getLength());
// You can also write it as a method, which is more efficient as done so above
Object.defineProperty(Object.prototype, "length", {get:function(){
return Object.keys(this).length;
}});
console.log(obj.length);
// probably the most effictive approach is done so and demonstrated above which sets a getter property called "length" for objects which returns the equivalent value of getLength(this) or this.getLength()
1 Stimmen
@neitony - das ist irgendwie wahr, aber so viele Leute sind an PHP's "assoziatives Array" gewöhnt, dass sie annehmen könnten, es bedeutet " bestellt assoziative Karte", wenn JS-Objekte in der Tat ungeordnet sind.
4 Stimmen
In dem obigen Beispiel ist myObject.length undefiniert, zumindest in einer Browserumgebung. Deshalb ist es ungültig, @AdrianM
3 Stimmen
Varianten von
Object.
{keys
,values
,entries
}(obj).length
wurden nun insgesamt 38 Mal in 16 Antworten und in den Kommentaren zu dieser Frage erwähnt, und weitere 11 Mal in 7 gelöschten Antworten. Ich denke, das ist jetzt genug.