Javascript มีชุดของฟังก์ชันที่คุณสามารถใช้เพื่อค้นหาองค์ประกอบในอาร์เรย์ เริ่มจากพื้นฐานที่สุดกันก่อน ฟังก์ชัน indexOf ทำงานผ่านอาร์เรย์ทั้งหมดและส่งคืนดัชนีขององค์ประกอบที่คุณค้นหา หากพบอย่างอื่น ฟังก์ชันจะคืนค่า -1 ตัวอย่างเช่น
ตัวอย่าง
let people = ["Harry", "Martha", "John", "Sam"];
console.log(people.indexOf("John"))
console.log(people.indexOf("Jim")) ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
2 -1
มีฟังก์ชันอื่นๆ ที่ซับซ้อนกว่าที่คุณสามารถใช้เพื่อทำให้การค้นหามีประสิทธิภาพมากขึ้น มาดูวิธี find() กัน เมธอด find() จะคืนค่าอ็อบเจ็กต์แรกที่ตรงกับเงื่อนไขที่คุณระบุเป็นเมธอด callback() ตัวอย่างเช่น
ตัวอย่าง
let people = [{
name: 'Agnes',
age: 25
}, {
name: 'Richard',
age: 21
}, {
name: 'Zoe',
age: 35
}];
let personNameStartsWithR = people.find(person => person.name[0] === 'R');
console.log(personNameStartsWithR) ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
{ name: 'Richard', age: 21 } แต่ผลลัพธ์ข้างต้นทำให้เรามีวัตถุ เราสามารถค้นหาดัชนีของวัตถุนี้โดยใช้ฟังก์ชัน findIndex ตัวอย่างเช่น
ตัวอย่าง
let people = [{
name: 'Agnes',
age: 25
}, {
name: 'Richard',
age: 21
}, {
name: 'Zoe',
age: 35
}];
let personNameStartsWithR = people.findIndex(person => person.name[0] === 'R');
console.log(personNameStartsWithR) ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
1
โปรดทราบว่าฟังก์ชัน find() และ findindex() รับการเรียกกลับเป็นอาร์กิวเมนต์ และการเรียกกลับรับอาร์กิวเมนต์:องค์ประกอบ ดัชนี อาร์เรย์ ฟังก์ชันเหล่านี้ให้การเกิดขึ้นครั้งแรกขององค์ประกอบเท่านั้น ฟังก์ชัน indexOf ยังรับพารามิเตอร์อื่น fromIndex เพื่อให้คุณสามารถค้นหาต่อจากจุดนั้นเป็นต้นไป ตัวอย่างเช่น
ตัวอย่าง
let people = ["Harry", "Martha", "John", "Sam", "Martha"];
console.log(people.indexOf("Martha"));
console.log(people.indexOf("Martha", 3)) ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
1 4