下面是根據值在 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`