someとeveryの罠
someとeveryの罠:
JavaScriptには配列に対して使える便利なメソッドがいくつかある(
今回はその内の一種である
配列に対して条件式が一つでもtrueの場合に
配列に対して条件式が全てtrueの場合に
(※ 一つでも
空配列(
感覚的にはむしろ、全てtrueでないとtrueにならない
"空集合"とか"∀"とか高校数学ぶりだわ!懐かしい!笑
はじめに
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になると思っていたのでまんまとハマりました。"空集合"とか"∀"とか高校数学ぶりだわ!懐かしい!笑
コメント
コメントを投稿