Попробуйте запустить следующий код в Firebug:
var a = [];
a[663] = "a";
a.length == 664;
это возвращает
true
Если вы попробуете
console.log(a)
вы получите:
[undefined, undefined, undefined, ...... , undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "a"]
Сколько памяти это потребляет, может зависеть от того, какой движок вы используете, но он выглядит как будто много слотов выделено для хранения значения.
Я думаю, что вы действительно хотите использовать простую карту в стиле Объекта, например:
var a = {};
a[664] = "a";
a[323] = "b";
a
, что дает:
Object 664=a 323=b
, что гораздо лучше подходит для отображения ассоциаций id-> object.
Если вам нужно выполнить итерацию по этому объекту позже, чтобы посетить все объекты, используйте следующий код:
for(var id in a){
if(a.hasOwnProperty(id)){
console.log("id:",id," object:",a[id]);
}
}