every()
とsome()
は配列内の要素をテストし、条件を満たしていれば最終的にtrue
、満たしていなければfalse
を返します。
/** * 偶数チェック */ const list = [1, 2, 3, 4, 5] const check = value => ((value % 2) === 0) // テストを行う const check1 = list.every(check) // すべて偶数か (AND) const check2 = list.some(check) // 一つでも偶数か (OR) // 結果表示 console.log(check1) // false console.log(check2) // true
every()
はすべての要素が条件を満たしているかどうか、some()
は一つでも満たしているかの違いになります。要はeveryがANDで、someがORですね。
利用例
NGワードを含んでいるかチェック - some()
const list = [ '吾輩は猫である', '名前はまだない', 'どこで生れたかとんと見当がつかぬ' ] if( list.some(value => value.match(/猫/)) ){ console.log('NGワードあり') } else{ console.log('NGワードなし') }
入力の抜け漏れがないかチェック - every()
ざっくりとしたValdiationに応用してみます。
document.querySelectorAll()
の戻り値をスプレッド構文で一般的な配列に変換し、取り出したHTMLを順番に処理していきます。
<form> <input type="text" id="name"> <input type="text" id="birthday"> <input type="text" id="address"> <button id="btn">チェック</button> </form> <script> document.querySelector('#btn').addEventListener('click', (e)=>{ const list = [...document.querySelectorAll('input')] if( list.every(elem => elem.value !== '') ){ alert('抜け漏れなし') } else{ alert('抜け漏れあり') } e.preventDefault() }) </script>