2011-01-15 3 views

ответ

20

Вы должны перебрать все элементы, чтобы их сосчитать:

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

Кажется, вызывается лучший API, такой как Object.keys javascript() – hrabinowitz

0

Даже короткий код здесь:

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

Только не забудьте обновить самый последний аргумент в список объектов, если когда-либо что-либо добавляется к нему. Думаю, это основной недостаток такого подхода. И теперь, конечно, .cnt на самом деле не возвращает истинную длину списка, а скорее это длина списка - 1.

+0

Это может получить сложно. 'cnt' может стать неточным в случаях, когда свойство перезаписывает уже существующее свойство или когда свойство удаляется без существующего. Таким образом, проверки будут необходимы каждый раз, когда объект будет изменен. –

Смежные вопросы