JavaScriptの配列を条件指定して確認するsome()とevery()メソッド

2021年2月12日JavaScript

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]
}

このように、内部に入る関数を分けることで、複数のメソッドで呼び出すことができるようになります。