JavaScript: есть ли причина использовать 2 отдельных массива для пар ключ-значение в хеш-таблице? - PullRequest
1 голос
/ 08 апреля 2011

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

Этот конкретный пример состоит из 2-х массивов строк .. например,

q[0] = "key" v[0] = "value"

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

Нет.Хеширование ключа не очень дорогая операция.Конечно, не в такой степени, чтобы оправдать неприглядный беспорядок, который потребовался бы для того, чтобы этот образец работал как реальная замена хеш-таблицы.

0 голосов
/ 08 апреля 2011

Полагаю, это может быть просто предпочтением, но это было идиоматично в течение многих лет.В C, например, массив имеет тип, и сложнее иметь массив переменных типов (то есть массив [key0], массив [value0], массив [key1], массив [value1]), чем просто иметьключи и значения в разных массивах.Для меня было бы кошмаром иметь ключи и значения в одном и том же массиве, потому что мне всегда приходилось не забывать удваивать любой индекс в этом массиве, а затем увеличивать его для значения.Слишком много для моего ленивого мозга.

0 голосов
/ 08 апреля 2011

Массивы в JavaScript в значительной степени являются хеш-таблицами, которые ограничивают свои ключи до целых чисел.Они не являются «истинными» массивами, представляющими собой непрерывные слои памяти, доступ к которым осуществляется смещением (индексом), как в большинстве языков.Я предполагаю, что оригинальный автор предположил, что массив в JavaScript реализован в классическом смысле.

Так что это, по сути, вдвое неэффективно, чем просто q["key"] = "value" и создание q объекта вместо массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...