JavaScriptの配列を条件指定して確認するsome()とevery()メソッド
JavaScriptの配列を条件指定して確認するsome()メソッドとevery()メソッドをまとめました。
some()メソッド
似たようなメソッドにincludes()メソッドがあります。
includes()メソッドは、特定の要素が配列にあるかどうかを確認して、true/falseで返します。
some()メソッドは指定した条件の要素があればtrue、なければfalseを返します。何個要素が該当してもtrueで返します。
{
let accounts = [1, 2, 3, -1, -3, -5];
//some and every
console.log(accounts.includes(2)); //true
const negativeValue = accounts.some(val => val < 0);
console.log(negativeValue); //true
const sameConditionAsIncludes = accounts.some(val => val === 2);
console.log(sameConditionAsIncludes); //true
}
includes()メソッドは等価かどうか(Equality)を判断しています。
それに対し、some()メソッドは、条件(Condition)を判断します。
そのため、some()メソッドでは、等価を確認する条件を設定すれば、includes()メソッドと同じことが可能になります。
every()メソッド
some()メソッドとは逆に、every()メソッドはすべての要素が条件を満たせば、trueを返し、一つでも条件を満たさなければfalseを返します。
{
//every()メソッド
let accounts = [1, 2, 3, -1, -3, -5];
const negativeValueEvery = accounts.every(val => val < 0);
console.log(negativeValueEvery);//false
}
コールバック関数を分けて書く
コールバック関数を分けて書くと、それぞれのメソッドを同じ条件で比較する際に便利になります。
{
let accounts = [1, 2, 3, -1, -3, -5];
//Separete callback
const valueCheck = val => val > 0;
console.log(accounts.some(valueCheck));//true
console.log(accounts.every(valueCheck));//false
console.log(accounts.filter(valueCheck));//(3) [1, 2, 3]
}
このように、内部に入る関数を分けることで、複数のメソッドで呼び出すことができるようになります。