技術(shù)頻道導(dǎo)航
HTML/CSS
.NET技術(shù)
IIS技術(shù)
PHP技術(shù)
Js/JQuery
Photoshop
Fireworks
服務(wù)器技術(shù)
操作系統(tǒng)
網(wǎng)站運(yùn)營

贊助商

分類目錄

贊助商

最新文章

搜索

JavaScript中findIndex與indexOf 的區(qū)別

作者:admin    時(shí)間:2022-6-30 9:33:22    瀏覽:

在 JavaScript 數(shù)組中查找索引有兩種有用的方法,在這篇關(guān)于 JavaScript 中 findIndexindexOf 的文章中,我們將研究 Array.prototype.findIndex 方法和 Array.prototype.indexOf 方法之間的區(qū)別。

JavaScript中findIndex與indexOf 的區(qū)別

JavaScript 中的 findIndex 和 indexOf 有什么區(qū)別?

JavaScript 中 findIndexindexOf 的主要區(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ù)返回 truefindIndex 方法將認(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è)示例,說明在查看 findIndexindexOf 時(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中的findIndexindexOf之間的區(qū)別,它們是 JavaScript 數(shù)組中查找索引的兩種有用的方法。

相關(guān)文章

標(biāo)簽: findIndex  indexOf  
相關(guān)文章
    x
    • 站長推薦
    /* 左側(cè)顯示文章內(nèi)容目錄 */