Skip to main content

JavaScript 速查 Array 的查詢和篩選方法

  • find:
    • 返回陣列中第一個滿足 callback function 條件 的==「元素」==,如果找不到符合條件的元素,則返回 undefined
    • 接收一個==「callback function」== 作為參數
  • some:
    • 接收一個 ==「callback function」==作為參數
    • 只要陣列中有==「任一」==元素滿足 callback function,就會返回 true,反之,返回 false
  • every:
    • 接收一個==「callback function」== 作為參數
    • 如果陣列中==「所有元素」==都滿足 callback function 才返回 true
  • indexOf:
    • 接收一個==「元素」==作為參數
    • 該元素在陣列中第一次出現的==「index」==,如果找不到該元素,則返回 -1
    • 要從後面開始找,使用 lastIndexOf
  • includes:
    • 接收一個==「元素」==作為參數
    • 如果該元素在陣列中存在,則返回 true,否則,返回 false
  • findIndex:
    • 接收一個==「callback function」== 作為參數
    • 返回陣列中第一個滿足 callback function 的元素之「index」,如果找不到符合條件的元素,則返回 -1
方法名稱參數返回值空陣列的返回值
findcallback function符合條件的第一個元素或 undefinedundefined
somecallback function任一元素符合條件時返回 true,否則 falsefalse
everycallback function所有元素都符合條件時返回 true,否則 falsetrue
indexOf元素元素的第一個索引或 -1-1
includes元素陣列中存在元素時返回 true,否則 falsefalse
findIndexcallback function符合條件的第一個元素的索引或 -1-1
注意,對於空陣列,`every` 方法會返回 `true`

對於這點,chatGPT 提出了 every 會隱含 vacuous truth 的概念,Vacuous Truth 直覺與不嚴謹的思考理解,發現這個跟離散數學有關係

附註 every vs. some 的底層運作

every 函數會預設返回 true

  • 開始檢查陣列中的每一個元素
  • 只要有一個元素不符合條件,立刻停止檢查並返回 false
  • 如果所有元素都符合條件,或者陣列是空的,會返回 true

some 函數會預設返回 false

  • 開始檢查陣列中的每一個元素
  • 只要有一個元素符合條件,立刻停止檢查並返回 true
  • 如果所有元素都不符合條件,或者陣列是空的,會返回 false

以上可以在 ECMAScript TC 39 獲得證實

相關筆記