ฉันท่องไปรอบ ๆ เพื่อพยายามหาวิธีที่มีประสิทธิภาพในการทำสิ่งนี้ แต่ไม่มีที่ไหนเลย ฉันมีอาร์เรย์ของวัตถุที่มีลักษณะเช่นนี้:
array[i].id = some number;
array[i].name = some name;
สิ่งที่ฉันต้องการทำคือค้นหา INDEXES ของวัตถุที่ id เท่ากับตัวอย่างหนึ่งใน 0,1,2,3 หรือ 4 ฉันคิดว่าฉันสามารถทำสิ่งที่ชอบ:
var indexes = [];
for(i=0; i<array.length; i++) {
(array[i].id === 0) ? { indexes[0] = i }
(array[i].id === 1) ? { indexes[1] = i }
(array[i].id === 2) ? { indexes[2] = i }
(array[i].id === 3) ? { indexes[3] = i }
(array[i].id === 4) ? { indexes[4] = i }
}
แม้ว่าจะใช้งานได้ แต่ก็ดูเหมือนจะค่อนข้างแพงและช้า (ไม่ต้องพูดถึงน่าเกลียด) โดยเฉพาะอย่างยิ่งถ้า array.length อาจมีขนาดใหญ่ ความคิดใด ๆ เกี่ยวกับวิธีทำให้มันดูดีขึ้นหน่อย ฉันคิดว่าจะใช้ array.indexOf แต่ฉันไม่เห็นวิธีบังคับไวยากรณ์ นี้
array.indexOf(this.id === 0);
ตัวอย่างเช่นส่งคืนไม่ได้กำหนดตามที่ควรจะเป็น ขอบคุณล่วงหน้า!