JavaScript'teki her nesne bir nesne karması olarak uygulanır, dolayısıyla işlevsel bir fark yoktur.
Örneğin, bu testi kontrol: pozisyonlar olarak kullanıldığında
var arr = [];
arr[5] = 5;
arr['5'] = 'not 5';
console.log(arr.length, arr);
// output: 6 [undefined, undefined, undefined, undefined, undefined, "not 5"]
Numaraları dizgelenmiş edilir.
Daha fazla bilgi için JavaScript hakkında Crockford's website adresine bakın. Bu durumda,' sen izini (gibi 500,000'den) tutmak için nesnelerin bir ton yoksa
Arrays in JavaScript are also hashtable objects.
Performans gerçekten bir sorun değil: Özellikle önemli parçası başlığı "Dizileri" altında Muhtemelen yanlış bir şey yapıyordur.
Yapabileceğiniz en iyileştirmeler vardır, ancak JavaScript'le doğal olmayan bir şey yapmıyorsanız (sıkıştırma algoritmaları gibi ... JS'de bir LZMA uygulamasında çalıştım ... kötü bir fikir) gerçekten anlam ifade etmiyorlar.
Not:
sen (siz her 10,000 kişiden sadece 10 endeksler tanımlamak gibi) yedek bir set var, muhtemelen normal bir nesne kullanarak olmalıdır. Diziler, tüm 10.000 dizinleri 'tanımsız' olarak başlatacak, Object.keys(obj)
ise yalnızca ayarladığınız 10'u rapor edecektir. Bu aslında mantıklı olan küçük bir optimizasyon.
Kendi başınıza yaptığınız araştırma size bu soruların herhangi birini anlatıyor mu? –
Kendi başıma çok fazla araştırma yapmak istemiyorum: a) Muhtemelen yine de yanlış anlayacağım ve b) Bu konu hakkında daha önce usta bir kişi tarafından yapılma ihtimali çok yüksektir. – hugomg
Güncelleme: [JavaScript'te bir nesnenin bir özelliğine erişme süresini sabitleyen herhangi bir şey var mı?] (Http://stackoverflow.com/q/34292087/1048572) – Bergi