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