下面是根據值在 JS 陣列中檢索項目索引的方法。

假設您有一個包含在陣列中的項目的值,並且您想獲取其索引。

您該如何做到這一點?

如果項目是原始值,例如字符串或數字,您可以使用陣列的 indexOf 方法:

const letters = ['a', 'b', 'c']

const index = letters.indexOf('b')

//index 是 `1`

請記住,索引從數字 0 開始。

如果項目是物件,您無法使用這種方式,因為如果您嘗試這樣做:

const letters = [
 {
 letter: 'a',
 },
 {
 letter: 'b',
 },
 {
 letter: 'c',
 },
]

const index = letters.indexOf({
 letter: 'b',
})

index 將是 -1,這意味著未找到該項目。因為物件是按參考進行比較的,而不是按值進行比較(與原始類型不同)。傳遞給 indexOf 的物件是一個完全不同的物件,而不是陣列中的第二個項目。

您可以像這樣使用 findIndex 方法,它會遍歷陣列中的每個項目,並將元素和索引傳遞給運行的函式。從該函式返回的值將賦值給 findIndex 的返回值:

const letters = [
 {
 letter: 'a',
 },
 {
 letter: 'b',
 },
 {
 letter: 'c',
 },
]

const index = letters.findIndex((element, index) => {
 if (element.letter === 'b') {
 return true
 }
})

//index 是 `1`