JavaScript 速查 Array 的查詢和篩選方法
find
:- 返回陣列中第一個滿足 callback function 條件 的==「元素」==,如果找不到符合條件的元素,則返回
undefined
- 接收一個==「callback function」== 作為參數
- 返回陣列中第一個滿足 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
方法名稱 | 參數 | 返回值 | 空陣列的返回值 |
---|---|---|---|
find | callback function | 符合條件的第一個元素或 undefined | undefined |
some | callback function | 任一元素符合條件時返回 true ,否則 false | false |
every | callback function | 所有元素都符合條件時返回 true ,否則 false | true |
indexOf | 元素 | 元素的第一個索引或 -1 | -1 |
includes | 元素 | 陣列中存在元素時返回 true ,否則 false | false |
findIndex | callback function | 符合條件的第一個元素的索引或 -1 | -1 |
對於這點,chatGPT 提出了 every
會隱含 vacuous truth 的概念,Vacuous Truth 直覺與不嚴謹的思考理解,發現這個跟離散數學有關係
附註 every
vs. some
的底層運作
every 函數會預設返回 true
- 開始檢查陣列中的每一個元素
- 只要有一個元素不符合條件,立刻停止檢查並返回
false
- 如果所有元素都符合條件,或者陣列是空的,會返回
true
some 函數會預設返回 false
- 開始檢查陣列中的每一個元素
- 只要有一個元素符合條件,立刻停止檢查並返回
true
- 如果所有元素都不符合條件,或者陣列是空的,會返回
false
以上可以在 ECMAScript TC 39 獲得證實
- https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.every
- https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.some