Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   индексация строками (https://javascript.ru/forum/misc/52855-indeksaciya-strokami.html)

nayldock 09.01.2015 22:15

индексация строками
 
Подскажите пожалуйста, как узнать длину подобного массива?
worker = new Array;
worker["фамилия"] = "Петров";
worker["имя"] = "Николай";
worker["возраст"] = 35;
worker["образование"] = "Высшее";
worker["должность"] = "Главный инженер";
worker["оклад"] = 40000 + "руб.";


Если строки заменить индексами, свойство length отображает длину. А тут видимо иначе как-то:(

Octane 09.01.2015 22:29

var worker = {
    "фамилия": "Петров",
    "имя": "Николай",
    "возраст": 35,
    "образование": "Высшее",
    "должность": "Главный инженер",
    "оклад": 40000 + "руб."
};

alert(Object.keys(worker).length);

Safort 09.01.2015 22:40

Прочитай про массивы и объекты по подробнее. В JS нет ассоциативных массивов, вместо них можно использовать объекты как в примере Octane. Но в тоже самое время массивы в JS являются особыми типами объектов, благодаря чему к ним можно добавлять свойства.

nayldock 09.01.2015 22:58

Цитата:

Сообщение от Safort (Сообщение 350528)
В JS нет ассоциативных массивов

Пару учебников, в данный момент открытые передо мной, утверждает обратное. Спасибо за ответы, буду разбираться дальше...

Safort 09.01.2015 23:19

nayldock,
Цитата:

Пару учебников, в данный момент открытые передо мной, утверждает обратное.
А можно ссылочки на страницы этих учебников?

ruslan_mart 10.01.2015 06:43

Safort, в JS объекты и есть ассоциативные массивы. По крайней мере, многие так утверждают. :)

Erolast 10.01.2015 09:03

Цитата:

Пару учебников, в данный момент открытые передо мной, утверждает обратное. Спасибо за ответы, буду разбираться дальше...
В JS массивы МОГУТ быть ассоциативными, но это исключительно побочный эффект, возникающий от того, что Array наследует от Object. Для хранения значений по строковым ключам используются объекты, для того они и предназначены.

bes 10.01.2015 10:26

Цитата:

Сообщение от Safort
А можно ссылочки на страницы этих учебников?

http://learn.javascript.ru/object
интерфейс реализован (если так можно сказать в данном случае с учётом названия операций), значит являются
то, что при этом возможностей больше, этому не мешает

Safort 10.01.2015 22:15

Ruslan_xDD,
Цитата:

Safort, в JS объекты и есть ассоциативные массивы. По крайней мере, многие так утверждают.
Не совсем, потому, что

Цитата:

Сообщение от Erolast (Сообщение 350564)
Array наследует от Object. Для хранения значений по строковым ключам используются объекты, для того они и предназначены.

и ещё
var o = {};
alert(typeof o);


Но, если рассматривать их с точки зрения утиного теста, то вполне.

bes 10.01.2015 22:37

Цитата:

Сообщение от Safort
Но, если рассматривать их с точки зрения утиного теста, то вполне.

подоплёка там такая

определение понятия:
понятие = родовое понятие + видовые отличия

например,
Цитата:

Шарик — бездомная собака, после опытной операции профессора Преображенского, ставшая человекообразным существом
как ни крути, Шарик - это собака :)


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