2011-01-15 13 views

Antwort

20

Sie eine Schleife über alle Elemente haben, sie zu zählen:

function objectLength(myObject:Object):int { 
var cnt:int=0; 

for (var s:String in myObject) cnt++; 

return cnt; 
} 

var o:Object={foo:"hello", bar:"world"}; 
trace(objectLength(o)); // output 2 
+1

Scheint, für eine bessere API, wie z. B. JavaScript's Object.keys() zu rufen – hrabinowitz

0

Noch kürzerer Code hier:

var o:Object={foo:"hello",bar:"world",cnt:2}; 
trace(o.cnt); // output 2; 

Denken Sie daran, das letzte Argument in der aktualisieren Objektliste, wenn jemals etwas hinzugefügt wird. Das ist der größte Nachteil dieses Ansatzes, denke ich. Und jetzt, natürlich, die .cnt gibt nicht wirklich die tatsächliche Listenlänge zurück, sondern es ist die Listenlänge - 1.

+0

Dies könnte werde trickreich. 'cnt' könnte in den Fällen ungenau werden, in denen eine Eigenschaft eine bereits vorhandene Eigenschaft überschreibt oder wenn eine Eigenschaft gelöscht wird, ohne dass sie existiert. Daher würden Prüfungen jedes Mal benötigt, wenn das Objekt modifiziert wird. –

Verwandte Themen