Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как узнать длину ассоциативного массива? (https://javascript.ru/forum/misc/31182-kak-uznat-dlinu-associativnogo-massiva.html)

vitorrio 29.08.2012 14:14

Как узнать длину ассоциативного массива?
 
Пример массива:
var arr={test:'дом',test1:{test:'дача',test1:'домик',0:'Хижина'}};

//Почему тут я могу обращаться через точки к текстовым ключам,
alert(arr.test1.test1);
//домик

//а к числовому приводит к какой-то ошибке и соответсвенно вообще ничего не работает
alert(arr.test1.0);
//Syntax error at line 43 while loading: expected ')', got '.0' alert(arr.test1.0));

//И как узнать длину массива? 
alert(arr.test1.length);
//undefined

Был бы не ассоциативный массив то легко бы посчитал а в данном случае как?

devote 29.08.2012 14:18

к числовому нужно обращатся так:
alert(arr.test1[0]);
посчитать количество можно так:
alert( Object.keys( arr.test1 ).length );

bot87 29.08.2012 14:24

В javascript нету ассоциативных массивов,которые есть в PHP.
у вас объект.

alert(arr.test1.test1);//здесь все норм,вы получили доступ к свойству объекта
alert(arr.test1[0]);//так должно сработать.

У объекта так длина не определяется.Как альтернатива можно пробежатся for ...in по объекту и определить количество .

vitorrio 29.08.2012 15:02

Ошибка=(
Цитата:

Сообщение от devote
alert( object.keys( arr.test1 ).length );

Unhandled Error: Undefined variable: object

FINoM 29.08.2012 15:13

Цитата:

Сообщение от vitorrio
Ошибка

Что за браузер?
https://github.com/kriskowal/es5-shim

vitorrio 29.08.2012 15:16

FINoM,
Моя ошибка, Object с маленькой написал -в этом и ошибка,xD.

lord2kim 29.08.2012 15:21

ну как минимум IE8< данный метод не поддерживает...

vitorrio 29.08.2012 17:25

lord2kim,
для IE думаю вариантов других нет, кроме как перебор?

lord2kim 29.08.2012 17:30

vitorrio, может и есть, но таковых не знаю(((

Deff 29.08.2012 17:42

Ну по идее число ключей и значений мон узнать (если все ключи со значениями - занчит удвоенное значение кол-во ключей
<script type="text/javascript">
var arr={test:'дом',test1:{test:'дача',test1:'домик',0:'Хижина'}};
alert(arr.test1['test1']);
alert(arr.test1[0].length);
</script>


Часовой пояс GMT +3, время: 13:23.