Массивы в JavaScript в значительной степени являются хеш-таблицами, которые ограничивают свои ключи до целых чисел.Они не являются «истинными» массивами, представляющими собой непрерывные слои памяти, доступ к которым осуществляется смещением (индексом), как в большинстве языков.Я предполагаю, что оригинальный автор предположил, что массив в JavaScript реализован в классическом смысле.
Так что это, по сути, вдвое неэффективно, чем просто q["key"] = "value"
и создание q объекта вместо массива.