在 JavaScript 陣列中搜索元素


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

更新於:2020年6月15日

429 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始學習
廣告