7

How can I get the number of properties in a generic Actionscript Object? (Like Array length)

Fragsworth
  • 33,919
  • 27
  • 84
  • 97

2 Answers2

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