ฉันมีแบบจำลองที่มีวัตถุหลายพันรายการ ฉันสงสัยว่าสิ่งใดจะเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการจัดเก็บและเรียกคืนวัตถุเดียวเมื่อฉันมีรหัส ID เป็นตัวเลขที่ยาว
ดังนั้นนี่คือ 2 ตัวเลือกที่ฉันคิด ในตัวเลือกที่หนึ่งมันเป็นอาร์เรย์ที่เรียบง่ายพร้อมดัชนีที่เพิ่มขึ้น ในตัวเลือกที่ 2 มันคืออาเรย์แบบเชื่อมโยงและอาจเป็นวัตถุถ้ามันสร้างความแตกต่าง คำถามของฉันคือที่หนึ่งมีประสิทธิภาพมากขึ้นเมื่อฉันต้องการดึงวัตถุเดียวส่วนใหญ่ แต่บางครั้งก็วนผ่านพวกเขาและเรียงลำดับ
ตัวเลือกที่หนึ่งกับอาร์เรย์ที่ไม่เชื่อมโยง:
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];
}
}
ตัวเลือกที่สองกับอาเรย์แบบเชื่อมโยง:
var a = []; // maybe {} makes a difference?
a[29938] = {id: 29938, name: 'name1'};
a[32994] = {id: 32994, name: 'name1'};
function getObject(id) {
return a[id];
}
ปรับปรุง:
ตกลงฉันได้รับการใช้อาร์เรย์ในตัวเลือกที่สองหมดคำถาม ดังนั้นบรรทัดการประกาศตัวเลือกที่สองควรเป็นจริง: var a = {};
และคำถามเดียวคือ: สิ่งที่ทำงานได้ดีขึ้นในการดึงวัตถุที่มี id ที่กำหนด: อาร์เรย์หรือวัตถุที่ id เป็นกุญแจสำคัญ
และคำตอบจะเปลี่ยนไปหรือไม่ถ้าฉันต้องเรียงลำดับรายการหลายครั้ง?