Binlerce nesne içeren bir modelim var. Onları depolamanın ve tek bir nesneyi aldıktan sonra en etkili yolun ne olacağını merak ediyordum. Kimlikler uzun sayılardır.
Bunlar benim düşündüğüm 2 seçenek. Birinci seçenekte, artan bir endekse sahip basit bir dizi. 2. seçenekte, ilişkisel bir dizi ve belki bir fark yaratıyorsa, bir nesne olabilir. Benim sorum, hangisinin daha verimli olduğu, çoğunlukla tek bir nesneyi almam gerektiğinde, ancak bazen bunlar arasında dolaşıp sıralayabileceğim.
İlişkilendirilmemiş diziye sahip birinci seçenek:
var a = [{id: 29938, name: 'name1'},
{id: 32994, name: 'name1'}];
function getObject(id) {
for (var i=0; i < a.length; i++) {
if (a[i].id == id)
return a[i];
}
}
İlişkilendirilebilir diziyle ikinci seçenek:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
Güncelleme:
Tamam, ikinci seçenekte bir dizi kullanmak söz konusu değil olsun. Dolayısıyla, ikinci seçenek olan bildirim satırı gerçekten şöyle olmalıdır: var a = {};
ve tek soru şudur: belirli bir kimliğe sahip bir nesneyi almanın daha iyi performans gösterdiği şey: bir dizi veya kimliğin anahtar olduğu bir nesne.
ve ayrıca, listeyi birçok kez sıralamak zorunda kalırsam cevap değişecek mi?