По поводу массивов в js ... в хроме например массивы это очень нетривиальный объект... до тех пор пока мы складываем элементы последовательно - это ArrayList, если мы делаем разряженный массив, то на каком-то этапе (при достижении достаточной степени разрежённости) - он превращается в хэш мэпу