Массивы в JavaScript

doublemother

Как в JavaScript создать массив с заданными индексами? Т.е. я хочу написать что-нибудь типа
var p = new Array;
p[1535] = new Array(535 => "a", 536 =>"b", 592 => "c");

Как должен выглядеть синтаксис? В справочниках описание создания массивов с определенными индексами не нашёл.

anatolii

Используй Object вместо Array.

var p = {}; // var p = new Object;
p[1535] = { 535 : "a", 536 : "b", 592 : "c"};

doublemother

А какой при этом синтаксис обращения к одному из элементов будет? Всё так же -
p[firstIndex][secondIndex]
?

anatolii

Да, только я там облажался - надо двоеточие вместо стрелочки.

artimon

При этом стоит заметить, что получился не массив, а объект.
Автору топика: то, что в PHP называется массивом на самом деле гибрид между массивами и хешами.

doublemother

Это я знаю, название просто удобное)

SCIF32

map-ы это :)

artimon

А они (map'ы) упорядочены?

klyv

а зачем?

artimon

Ну, в PHP "массивы" упорядоченны.
Давай разберёмся в терминологии: для меня хеш это неупорядоченный набор пар ключ-значение. Map — это синоним хеша в таком случае или нет?

slonishka

а какой смысл в неупорядоченном наборе ключ-значение? как O(1)-то получить?

Bibi

я думаю, речь о том, что невозможно произвольным образом упорядочить последовательность пар
даже, наверное, не об этом, а об отсутствии лексикографического порядка по ключам

SCIF32

по крайней мере в сях мапы разные бывают - и на хеше, и на упорядоченности
PS
просто слово map - значит отображать, и ,соответственно, хранит отображение одного множества в другое. а то как оно устроено внутри - зависит от конкретной реализации и языка.

klyv

в примере JavaScript'а это самое отображение работает на каждом шагу: строка-имя элемента объекта отображается на объект-значение. Эффективно отображать что-то непонятное с помощью "упорядоченности" нереально.

SCIF32

в примере JavaScript'а это самое отображение работает на каждом шагу: строка-имя элемента объекта отображается на объект-значение. Эффективно отображать что-то непонятное с помощью "упорядоченности" нереально.
почему нереально?
O(1)*ln(n) получается.
Для скорости доступа к чему-то непонятному такая оценка это круто.
(правда, надо еще умножить на оценку сложности операции сравнения,
и что круче - зависит еще и от того, как быстро хеш считается)

durka82

А так разве не работает?

pitrik2

просто слово map - значит отображать, и ,соответственно, хранит отображение одного множества в другое. а то как оно устроено внутри - зависит от конкретной реализации и языка.
слово мап, слово хеш понятно
а что означает слово Dictionary?
в сшарпе так мапы называют
ну тойсть вопрос, это они сперепоя так назвали или в этом названии есть смысл?

Dasar

а что означает слово Dictionary?
словарь: набор пар: термин -> определение
тоже самое, что и map.
но map - это скорее математическое, а Dictionary - это скорее "обывательское".

zya369

но map - это скорее математическое, а Dictionary - это скорее "обывательское".

а что испльзовать бедным программистам ? :crazy:

Dasar

что из этого есть, то и используй.
зы
или в твоей системе - есть и то, и другое?

zya369

я имел ввиду - какое слово :)

Dasar

имхо, лучше Dictionary(словарь).
потому что map еще используется, и как карта, и как mapping (некое сложное отображение одной области на другую) и т.д.

zya369

чорд..
вообще-то это была шутка, а не настоящий вопрос :)
Оставить комментарий
Имя или ник:
Комментарий: