Javascript everyメソッド
everyメソッドの使い方をメモ。
forループの場合
まず、forループを使って書いたコード。
オブジェクト配列の各要素で、priceの値が全て100以上ならtrue。priceの値が1つでも100未満であれば、falseとする処理。
var collections = [
{name: 'apple' , price: 100},
{name: 'orange', price: 200},
{name: 'grape' , price: 300}
];
var result = true;
for(var i = 0; i < collections.length; i++) {
if(collections[i].price < 100) {
result = false;
}
}
console.log(result);
結果は[true]。
forループの中にif文があって、階層が1つ深くなっている。
処理自体はシンプルだが、読みづらさがある。
everyの場合
それをeveryで書き換える。
var collections = [
{name: 'apple' , price: 100},
{name: 'orange', price: 200},
{name: 'grape' , price: 300}
];
var result = collections.every(function(value){
return value.price >= 100;
});
console.log(result);
結果は同じく[true]。
everyは、各要素を使ってコールバック関数(function(value))で条件に合致するか判定を行い、その結果として真偽値を返す。全ての要素がtrueとなる場合に、everyの結果としてtrueが返る。
※return文は必ず付ける。
※return文が無い場合、undefinedが返り値となり、結果がfalseとなってしまう。
forループを使った時よりも記述が少なく、シンプル。everyの意味を知っていれば処理が理解しやすい。
everyは配列要素に対する何かしらのチェック処理や、リクエスト前のバリデーションチェックなどに使える。
まとめ
・everyは、forループよりも書き方がシンプル。
・everyは、forループよりも可読性が増す。
・コールバック関数内で真偽値を返すので、returnを忘れないこと。
・配列の各要素が条件を満たしているかをチェックすることに使う。
例えば、リクエスト前のバリデーションチェック 等