こんにちは、”はふぃ”です。

JavaScriptには配列に対して使える便利なメソッドがいくつかあります。(mapfilterなど)
今回はその内の一種であるsomeeveryの話です。

some

配列に対して条件式が一つでもtrueの場合にtrueを返す。

< some.js >

const array = [1, 2, 3]

// true
array.some(item => item === 1)

// false
array.some(item => item === 4)

every

配列に対して条件式が全てtrueの場合にtrueを返す。
(※ 一つでもfalseの場合はfalse

< every.js >

const array = [1, 2, 3]

// true
array.every(item => typeof item === 'number')

// false
array.some(item => typeof item === 'string')

違い

空配列([])に対する結果が異なる。

  • some: false
  • every: true

< difference.js >

// false
[].some(item => item === 1)

// true
[].every(item => item === 1)

説明

everyは数学における「∀ (すべての / for all)」記号と同様のふるまいをし、空集合のすべての要素が与えられた任意の条件を満たすことは空虚に真 (vacuously true)なのでtrueとなるそうです。

参考:https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/every

終わりに

感覚的にはむしろ、全てtrueでないとtrueにならないeveryの方が空集合でfalseになると思っていたのでまんまとハマりました。
“空集合”とか”∀”とか高校数学ぶりだわ!懐かしい!笑

投稿者: はふぃ

若手のWEBフロントエンジニア。最近はバレーボールにハマってます!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA