最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Web前端JavaScript中findIndex方法使用示例

 更新時間:2025年08月23日 14:24:02   作者:一只小風(fēng)華~  
這篇文章主要介紹了Web前端JavaScript中findIndex方法使用的相關(guān)資料,findIndex()?返回第一個符合條件的數(shù)組子項的下標(biāo),找到符合條件的之后就不在繼續(xù)遍歷,需要的朋友可以參考下

1. findIndex是什么?

  • findIndex 是 JavaScript 數(shù)組(Array)自帶的一個方法。

  • 它的核心任務(wù)是:遍歷數(shù)組中的每一個元素,用你提供的一個“測試條件”(一個函數(shù))去檢查每個元素。一旦找到第一個能讓這個“測試條件”返回 true 的元素,它就立刻停止查找,并返回這個元素在數(shù)組中的位置(索引)。

  • 如果遍歷完整個數(shù)組,都沒有任何一個元素能讓“測試條件”返回 true,那么 findIndex 就返回 -1(這是一個通用的“沒找到”的信號)。

2. 它的作用(解決了什么問題?)

 想象一下這些場景:

  • 場景1: 你有一個學(xué)生名單(數(shù)組),每個學(xué)生是一個對象,包含 idnamescore。你想快速知道第一個分?jǐn)?shù)大于 90 分的學(xué)生在名單里排第幾位?

  • 場景2: 你有一個任務(wù)列表(數(shù)組),每個任務(wù)有 idtitlecompleted(是否完成)。你想找出第一個還沒完成的任務(wù)(completed 為 false)在列表中的位置,以便把它置頂顯示。

  • 場景3: 你在處理用戶輸入的一組數(shù)字,想找到第一個是負(fù)數(shù)的數(shù)字出現(xiàn)在第幾個位置。

 在這些場景中,你都需要:

  1. 檢查每個元素是否符合某個條件。

  2. 找到第一個符合條件的。

  3. 得到它的位置(索引),而不是元素本身的值。

findIndex 方法就是被設(shè)計出來完美解決這類問題的!它幫你省去了手動寫 for 循環(huán)遍歷、設(shè)置標(biāo)志變量、判斷條件、找到后 break 跳出循環(huán)這些繁瑣的步驟。

3. 如何使用?

findIndex 方法接收一個非常重要的參數(shù):一個回調(diào)函數(shù)(callback function)。這個函數(shù)就是前面說的“測試條件”。它的基本語法是:

const foundIndex = array.findIndex(callbackFunction);

回調(diào)函數(shù)怎么寫?

這個回調(diào)函數(shù)會被 findIndex 自動調(diào)用,通常接收三個參數(shù)(后兩個可選):

  1. element當(dāng)前正在被檢查的數(shù)組元素(必須)。

  2. index: (可選)當(dāng)前元素的索引。

  3. array: (可選)調(diào)用 findIndex 方法的那個數(shù)組本身。

最重要的是,這個回調(diào)函數(shù)需要返回一個布爾值(true 或 false):

  • 如果返回 true,表示當(dāng)前元素符合你的條件,findIndex 會立刻停止查找,并返回當(dāng)前元素的索引。

  • 如果返回 false,表示不符合,findIndex 會繼續(xù)檢查下一個元素。

4. 舉個栗子 

場景: 找學(xué)生名單里第一個分?jǐn)?shù)大于 90 的學(xué)生位置。

const students = [
  { id: 1, name: '小明', score: 85 },
  { id: 2, name: '小紅', score: 92 }, // 第一個 >90 的在這里!
  { id: 3, name: '小剛', score: 78 },
  { id: 4, name: '小麗', score: 95 }
];

// 使用 findIndex
const firstHighScoreIndex = students.findIndex(function(student) {
  // 回調(diào)函數(shù):檢查當(dāng)前學(xué)生的分?jǐn)?shù)是否大于90
  return student.score > 90;
});

console.log(firstHighScoreIndex); // 輸出: 1 (因為小紅在數(shù)組索引1的位置)

發(fā)生了什么?

  1. findIndex 從索引 0(小明)開始調(diào)用回調(diào)函數(shù):小明.score > 90 -> 85 > 90 -> false -> 繼續(xù)。

  2. 到索引 1(小紅):小紅.score > 90 -> 92 > 90 -> true! -> 立刻停止

  3. findIndex 返回 1(小紅的索引)。

  4. 后面的小剛和小麗就不會再被檢查了。

 更簡潔的寫法(箭頭函數(shù)):

const firstHighScoreIndex = students.findIndex(student => student.score > 90);
console.log(firstHighScoreIndex); // 輸出: 1

5. 如果沒找到呢?

const firstHighScoreIndex = students.findIndex(student => student.score > 100); // 沒人分?jǐn)?shù)大于100
console.log(firstHighScoreIndex); // 輸出: -1

6. 和它的“親戚們”對比一下,加深理解

  • find: 這是 findIndex 的“雙胞胎”。它做的事情幾乎一樣:遍歷數(shù)組,用回調(diào)函數(shù)測試,找到第一個符合條件的元素。關(guān)鍵區(qū)別在于返回值:find 返回的是符合條件的那個元素本身(比如返回小紅這個學(xué)生對象),而 findIndex 返回的是這個元素的索引(1)。你需要元素本身就用 find,需要位置就用 findIndex。

  • indexOf / lastIndexOf: 這兩個方法也返回索引。但它們找東西的方式簡單粗暴:它們找的是嚴(yán)格等于(===) 某個具體值的元素。比如 students.indexOf({id:2, ...}) 是找不到小紅的(因為對象引用不同),或者 [1, 2, 3].indexOf(2) 返回 1。而 findIndex 強大之處在于可以用任何復(fù)雜的條件(比如 score > 90)來找,不局限于簡單的值相等。

  • filterfilter 會返回所有符合條件的元素組成的新數(shù)組。它不在乎位置,也不會在找到第一個后就停止,它會檢查完所有元素。如果你只需要第一個,用 findIndex 或 find 性能更好。

  • somesome 只關(guān)心數(shù)組里有沒有符合條件的元素(返回 true 或 false)。它不關(guān)心是哪一個,也不關(guān)心位置。找到第一個符合條件的就返回 true 并停止(這點和 findIndex 停止時機類似),但返回值是布爾值而不是索引。

7. 總結(jié) & 關(guān)鍵點

  • findIndex 是數(shù)組方法:用來在數(shù)組中查找元素。

  • 核心功能:找到第一個滿足你提供的“測試函數(shù)”(回調(diào)函數(shù))的元素,并返回它的索引(位置)

  • 回調(diào)函數(shù)是核心:你定義查找條件的邏輯就寫在這個函數(shù)里。它接收當(dāng)前元素(必選)、索引(可選)、數(shù)組本身(可選),并必須返回 true 或 false。

  • 找到就停:一旦回調(diào)函數(shù)對某個元素返回 true,findIndex 立刻返回該索引,停止后續(xù)查找。

  • 找不到返回 -1:如果遍歷完都沒找到符合條件的元素,返回 -1記得檢查這個返回值!

  • 何時使用:當(dāng)你需要知道數(shù)組中第一個滿足某個(可能比較復(fù)雜的)條件的元素所在的位置時。

  • 優(yōu)勢:比手動寫循環(huán)簡潔,條件靈活(不像 indexOf 只能簡單匹配值)。

到此這篇關(guān)于Web前端JavaScript中findIndex方法使用的文章就介紹到這了,更多相關(guān)JS findIndex方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JS驗證碼實現(xiàn)代碼

    JS驗證碼實現(xiàn)代碼

    本文通過實例代碼給大家分享基于javascript實現(xiàn)的驗證碼功能,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-09-09
  • 原生JS實現(xiàn)目錄滾動特效

    原生JS實現(xiàn)目錄滾動特效

    這篇文章主要為大家詳細(xì)介紹了原生JS實現(xiàn)目錄滾動特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 淺談JS原型對象和原型鏈

    淺談JS原型對象和原型鏈

    這篇文章主要為大家詳細(xì)介紹了JS原型對象和原型鏈,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Nginx上傳文件全部緩存解決方案

    Nginx上傳文件全部緩存解決方案

    Nginx默認(rèn)會對上傳的文件先在本地進(jìn)行緩存,再轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器。請問怎么禁止掉這個緩存,讓Nginx只轉(zhuǎn)發(fā)而不緩存文件?本文給大家詳細(xì)介紹Nginx上傳文件全部緩存解決方案,有需要的朋友來參考下
    2015-08-08
  • 隨機顯示經(jīng)典句子或詩歌的javascript腳本

    隨機顯示經(jīng)典句子或詩歌的javascript腳本

    這篇文章主要介紹了隨機顯示經(jīng)典句子或詩歌的javascript腳本的相關(guān)資料,需要的朋友可以參考下
    2007-08-08
  • 用js來定義瀏覽器中一個左右浮動元素相對于頁面主體寬度的位置的函數(shù)

    用js來定義瀏覽器中一個左右浮動元素相對于頁面主體寬度的位置的函數(shù)

    用js來定義瀏覽器中一個左右浮動元素相對于頁面主體寬度的位置的函數(shù) 函數(shù)的參數(shù):elem元素、頁面主體寬度(如:990、950寬)、elem與頁面主體DIV的左邊距
    2012-01-01
  • 怎么選擇Javascript框架(Javascript Framework)

    怎么選擇Javascript框架(Javascript Framework)

    如果你正面臨這樣的問題,希望下面的幾個建議對你在選擇javascript框架上會有所幫助
    2013-11-11
  • 前端獲取IP地址的方法總結(jié)

    前端獲取IP地址的方法總結(jié)

    這篇文章主要介紹了前端獲取IP地址的四種方法:Vite配置、WebRTC、internal-ip插件及第三方API,并說明了各方法在不同環(huán)境下的適用性與限制,通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • 學(xué)習(xí)JavaScript設(shè)計模式之模板方法模式

    學(xué)習(xí)JavaScript設(shè)計模式之模板方法模式

    這篇文章主要為大家介紹了JavaScript設(shè)計模式中的模板方法模式,對JavaScript設(shè)計模式感興趣的小伙伴們可以參考一下
    2016-01-01
  • js獲取內(nèi)聯(lián)樣式的方法

    js獲取內(nèi)聯(lián)樣式的方法

    這篇文章主要介紹了js獲取內(nèi)聯(lián)樣式的方法,針對標(biāo)準(zhǔn)瀏覽器與IE瀏覽器進(jìn)行不同的判斷與獲取,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01

最新評論

长子县| 广南县| 黎川县| 衡东县| 崇信县| 淄博市| 奉化市| 三台县| 山西省| 濮阳市| 旬阳县| 凌源市| 禹州市| 睢宁县| 康保县| 银川市| 永济市| 齐河县| 安远县| 浑源县| 鹤庆县| 郧西县| 江永县| 莱阳市| 泰来县| 瓦房店市| 象山县| 衡东县| 江口县| 彝良县| 海口市| 治县。| 灵山县| 虎林市| 柳江县| 高要市| 石泉县| 那坡县| 汤原县| 保亭| 侯马市|