|
|
|
|
|
在 JavaScript 數(shù)組中查找索引有兩種有用的方法,在這篇關(guān)于 JavaScript 中 findIndex
與 indexOf
的文章中,我們將研究 Array.prototype.findIndex
方法和 Array.prototype.indexOf
方法之間的區(qū)別。
JavaScript 中的 findIndex 和 indexOf 有什么區(qū)別?
JavaScript 中 findIndex
與 indexOf
的主要區(qū)別在于 findIndex
接受回調(diào)作為參數(shù),而 indexOf
接受值作為參數(shù)。
這意味著 indexOf
只會在數(shù)組中查找值,而 findIndex
將讓你決定如何查找索引。
下面是Array.prototype.findIndex
方法與Array.prototype.indexOf
方法之間差異的直觀示例:
const exampleArray = ["a", "b", "c"]
exampleArray.indexOf("b") // 1
exampleArray.findIndex(arrayItem => arrayItem === "b") // 1
exampleArray.indexOf("d") // -1
exampleArray.findIndex(arrayItem => arrayItem === "d") // -1
輸出
可以看到,兩者非常相似,并且在查找相同值時(shí)會給出相同的結(jié)果。
我們提供給 findIndex
的回調(diào)函數(shù)總是需要返回一個(gè)布爾值。如果回調(diào)函數(shù)返回 true,findIndex
方法將認(rèn)為數(shù)組項(xiàng)與我們正在查找的內(nèi)容匹配,并將返回該索引。如果回調(diào)返回 false,它將移動(dòng)到下一個(gè)數(shù)組項(xiàng)。如果在數(shù)組末尾找不到正確的索引,這兩種方法都將返回 -1。
使用 indexOf
時(shí),它將查看每個(gè)數(shù)組項(xiàng)并返回它找到的第一個(gè)與我們提供給它的值匹配的索引,如果它沒有找到任何東西,它將返回 -1。
findIndex與indexOf如何查找數(shù)組中對象的索引
對象比較返回 true 的唯一情況是正在比較同一個(gè)對象。
這是一個(gè)例子:
{} === {} // false
const myObj = {}
myObj === myObj // true
輸出
即使對象是相同的,因?yàn)樗鼈儧]有指向同一個(gè)引用,所以比較失敗,但是當(dāng)它們指向同一個(gè)引用時(shí),比較通過。
考慮到這一點(diǎn),這里有一個(gè)示例,說明在查看 findIndex
與 indexOf
時(shí)如何在 JavaScript 中查找數(shù)組中對象的索引:
const exampleObj = { laptops: 5 }
const exampleArray = [{ laptops: 10 }, exampleObj, { laptops: 14 }]
exampleArray.indexOf({ laptops: 5 }) // -1
exampleArray.indexOf({ laptops: 10 }) // -1
exampleArray.findIndex(arrayItem => arrayItem.laptops === 5) // 1
exampleArray.indexOf(exampleObj) // 1
輸出
正如在 indexOf
中看到的那樣,即使我們提供了一個(gè)相同的對象,它也無法在數(shù)組中找到它。
使用 findIndex
允許我們檢查數(shù)組中每個(gè)對象的屬性、鍵和值,因此它可以在數(shù)組中找到正確的項(xiàng)目并返回索引。
最后,因?yàn)槲覀儼岩脗鬟f給最后一個(gè) indexOf
方法,它可以在數(shù)組中找到正確的項(xiàng),因?yàn)橐孟嗟取?/p>
使用 findIndex 還是 indexOf ?
如果你正在搜索一個(gè)簡單的值,如數(shù)字或字符串,那么在大多數(shù)情況下,你可能希望使用 Array.prototype.indexOf
,因?yàn)樗耆夏愕男枨?,并且易于使用和理解?/p>
如果你正在搜索更復(fù)雜的值(例如對象),那么你很可能希望使用 Array.prototype.findIndex
以便你可以通過搜索每個(gè)對象的鍵、值和屬性來找到正確的索引。
總結(jié)
本文通過多個(gè)示例,介紹了JavaScript中的findIndex
與 indexOf
之間的區(qū)別,它們是 JavaScript 數(shù)組中查找索引的兩種有用的方法。
相關(guān)文章