こんにちは、”はふぃ”です。
JavaScriptには配列に対して使える便利なメソッドがいくつかあります。(mapやfilterなど)
今回はその内の一種であるsomeとeveryの話です。
目次
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になると思っていたのでまんまとハマりました。
“空集合”とか”∀”とか高校数学ぶりだわ!懐かしい!笑