【高階関数】everyとsomeについて解説 (GAS/JavaScript) | GASおじさんのブログ
GASの基本

【高階関数】everyとsomeについて解説 (GAS/JavaScript)

every-some GASの基本

everyメソッド

everyメソッドの概要

everyメソッドは、配列内のすべての要素が特定の条件を満たすかどうかを判定するための高階関数です。すべての要素が条件を満たせばtrueを返し、1つでも満たさない要素があればfalseを返します。

たとえば以下の場合、配列numbersの要素はすべて正の値なので、everyメソッドの結果はtrueを返します。

function myFunction() {
  const numbers = [1, 2, 3, 4, 5];
  const allPositive = numbers.every(number => number > 0);
  console.log(allPositive); // true
}

また、以下の場合は、配列numbersの要素には負の値が含まれているので、everyメソッドの結果はfalseを返します。

function myFunction() {
  const numbers = [1, 2, -3, 4, 5];
  const allPositive = numbers.every(number => number > 0);
  console.log(allPositive); // false
}

everyメソッドの使用例

たとえば以下のように、オブジェクトの配列studentsに対してeveryメソッドを使って、生徒全員が合格点に達しているかどうかを判定するような使い方が考えられます。

function myFunction() {
  const PASSING_SCORE = 60; // 合格点
  const students = [
    { name: '佐藤', score: 70 },
    { name: '鈴木', score: 80 },
    { name: '高橋', score: 90 },
  ];
  const allPassed = students.every(student => student.score >= PASSING_SCORE);
  if (allPassed) {
    console.log('全員合格です!');
  } else {
    console.log('不合格者がいます泣');
  }
}

someメソッド

someメソッドの概要

someメソッドは、配列内の少なくとも1つの要素が特定の条件を満たすかどうかを判定します。1つでも条件を満たせばtrueを返し、すべての要素が条件を満たさなければfalseを返します。

たとえば以下の場合、配列numbersの要素には負の値が含まれているので、someメソッドの結果はtrueを返します。

function myFunction() {
  const numbers = [1, 2, -3, 4, 5];
  const hasNegative = numbers.some(number => number < 0);
  console.log(hasNegative); // true
}

また、以下の場合は、配列numbersの要素はすべて正の値なので、someメソッドの結果はfalseを返します。

function myFunction() {
  const numbers = [1, 2, 3, 4, 5];
  const hasNegative = numbers.some(number => number < 0);
  console.log(hasNegative); // false
}

someメソッドの使用例

たとえば以下のように、オブジェクトの配列studentsに対してsomeメソッドを使って、誰か1人でも合格点に達しているかどうかを確認するような使い方が考えられます。

function myFunction() {
  const PASSING_SCORE = 60; // 合格点
  const students = [
    { name: '佐藤', score: 30 },
    { name: '鈴木', score: 40 },
    { name: '高橋', score: 60 },
  ];
  const someonePassed = students.some(student => student.score >= PASSING_SCORE);
  if (someonePassed) {
    console.log('合格者がいます!');
  } else {
    console.log('全員不合格です泣');
  }
}

まとめ

以上、everyメソッドおよびsomeメソッドについて解説しました。

everyとsomeは対の概念で、その違いはつまり、AND条件とOR条件の違いということですね。

  • everyは「全員合格しているか?」 のようなチェックに使う
  • someは 「誰か1人でも合格しているか?」 のようなチェックに使う

ということです。この考え方を意識しながら、every と some を直感的に使い分けていきましょう。

連載目次: 高階関数シリーズ

  1. 【高階関数】forEachメソッドについて解説 (GAS/JavaScript)
  2. 【高階関数】mapメソッドについて解説 (GAS/JavaScript)
  3. 【高階関数】filterメソッドについて解説 (GAS/JavaScript)
  4. 【高階関数】sortメソッドについて解説 (GAS/JavaScript)
  5. 【高階関数】reduceメソッドについて解説 (GAS/JavaScript)
  6. 【高階関数】findとfindIndexについて解説 (GAS/JavaScript)
  7. 【高階関数】everyとsomeについて解説 (GAS/JavaScript)
  8. 関数宣言・関数式・アロー関数 (GAS/JavaScript)

コメント

タイトルとURLをコピーしました