JavaScript มีฟังก์ชันสำหรับค้นหาสมาชิกในอาร์เรย์ เริ่มจากพื้นฐาน indexOf วนทั้งอาร์เรย์คืนดัชนีถ้าพบ ไม่พบคืน -1 ตัวอย่าง:
ตัวอย่าง
let people = ["Harry", "Martha", "John", "Sam"];
console.log(people.indexOf("John"))
console.log(people.indexOf("Jim"))
ผลลัพธ์
จะได้ผลลัพธ์:
2 -1
ฟังก์ชันซับซ้อนกว่า 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 personNameStartsWithR = people.findIndex(person => person.name[0] === 'R'); console.log(personNameStartsWithR)
ผลลัพธ์
จะได้ผลลัพธ์:
1
indexOf รับพารามิเตอร์ fromIndex เพื่อค้นหาต่อจากตำแหน่งนั้น ตัวอย่าง:
ตัวอย่าง
let people = ["Harry", "Martha", "John", "Sam", "Martha"];
console.log(people.indexOf("Martha"));
console.log(people.indexOf("Martha", 3))
ผลลัพธ์
จะได้ผลลัพธ์:
1 4