How can I get the number of properties in a generic Actionscript Object? (Like Array length)
Asked
Active
Viewed 7,569 times
2 Answers
21
You will have to loop over all element to count them:
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

Patrick
- 15,702
- 1
- 39
- 39
-
1Seems to call out for a better API, such as javascript's Object.keys() – hrabinowitz May 06 '15 at 17:49
0
Even shorter code here:
var o:Object={foo:"hello",bar:"world",cnt:2};
trace(o.cnt); // output 2;
Just remember to update the very last argument in the object list if ever anything is added to it. That's the main downside to this approach, I think. And now, of course, the .cnt
does not actually return the true list length, but rather it is the list length - 1.

Neal Davis
- 2,010
- 2
- 12
- 25
-
This could get tricky. `cnt` could become inaccurate in cases where a property overwrites an already-existing property, or when a property gets deleted without existing. Thus, checks would be needed every time the object is modified. – Kyle Delaney Aug 15 '17 at 21:33