JavaScript 逆引き集 | every で全件判定

JavaScript JavaScript
スポンサーリンク
スポンサーリンク

every で「全員が条件を満たすか」を判定する

arr.every(x => x > 0)

every は、「配列のすべての要素が、ある条件を満たしているかどうか」を判定するメソッドです。 天才プログラマー視点で言うと、「ひとつでもダメならアウト、全員 OK なら true」という“厳しめのチェック”専用ツールです。

truefalse を返すだけですが、その意味はとても重いです。

every の基本構造と「全員 OK なら true」になる仕組み

const arr = [1, 2, 3];

console.log(arr.every(x => x > 0));  // true
console.log(arr.every(x => x > 2));  // false
JavaScript

この動きを丁寧に分解します。

配列の先頭から順番に要素を取り出し、 コールバック関数 x => x > 0 を実行します。

  • ひとつでも条件が false になった瞬間に処理終了し、false を返す
  • 最後まで一度も false が出なければ true を返す

つまり、「全員が条件を満たしているときだけ true」という判定方法です。 逆に言えば、「ひとりでもダメなら false」です。

例題:配列が「全部正の数かどうか」をチェックする

const values1 = [10, 20, 30];
const values2 = [10, -5, 30];

const allPositive1 = values1.every(v => v > 0);
const allPositive2 = values2.every(v => v > 0);

console.log(allPositive1); // true
console.log(allPositive2); // false
JavaScript

ここでのポイントはこうです。

  • v > 0 が「正の数かどうか」の条件
  • values1 は全員が正の数 → true
  • values2 はひとりでも負の数がいる → false

「ひとつでも NG があればアウト」という判定は、バリデーション(入力チェック)で非常によく使われます。

some と every の関係を深掘りする

every とセットで覚えるべきなのが some です。

arr.some(x => x > 10);   // ひとつでも >10 があれば true(OR 的)
arr.every(x => x > 10);  // 全員が >10 なら true(AND 的)
JavaScript

天才講師としてまとめるなら、

  • some = 「誰かひとりでも OK なら true」
  • every = 「全員 OK なら true」

という関係です。

「ひとつでも該当すればいい」のか、 「全員が条件を満たしていないとダメ」なのか。

この違いを意識して使い分けると、コードの意図がとてもクリアになります。

コールバック関数の役割と設計

every のコールバックは、最大3つの引数を受け取れます。

arr.every((value, index, array) => {
  // value: 今の要素
  // index: その要素のインデックス
  // array: 元の配列そのもの
  // 戻り値: true なら「この要素は条件を満たしている」、false なら「満たしていない」
});
JavaScript

重要なのは、「false を返した瞬間に処理が止まる」という点です。 全部見てから判定するのではなく、 「ひとりでもダメなら即アウト」なので、効率的なチェックができます。

例題:ユーザー全員がアクティブかどうかをチェックする

const users = [
  { name: "Aki", active: true },
  { name: "Mika", active: true },
  { name: "Ken", active: false }
];

const allActive = users.every(u => u.active);

console.log(allActive); // false
JavaScript

ここでは、

  • u.active が true なら「そのユーザーはアクティブ」
  • 全員が true なら every は true
  • ひとりでも false がいれば、結果は false

「全員が条件を満たしているか」を一発で判定できるのが every の強みです。

よくあるミスと注意点を深掘りする

コールバックで return を書き忘れる

const arr = [1, 2, 3];

const r = arr.every(x => {
  x > 0; // return がない!
});

console.log(r); // false(常に false)
JavaScript

ブロック {} を使ったときは、必ず return が必要です。

正しくはこうです。

const r = arr.every(x => {
  return x > 0;
});
JavaScript

または省略形でこう書けます。

const r = arr.every(x => x > 0);
JavaScript

「全部チェックしたい」のか「ひとりでもダメならアウト」なのかを意識する

every は「全員 OK かどうか」を見るためのものなので、 「誰かひとりでも OK ならいい」という場面では some を使うべきです。

この意図の違いをコードに反映できると、 読み手にとっても非常に分かりやすいロジックになります。

まとめ:every は「全員が条件を満たしているか」の厳格な判定ツール

every を使いこなせると、配列のチェックロジックが一気に洗練されます。

  • 全員が条件を満たしているときだけ true
  • ひとりでもダメなら false
  • some と対になる(OR と AND の関係)
  • バリデーションや安全性チェックで頻出

「この配列の中、全員ちゃんと○○になってる?」 そう感じた瞬間に、arr.every(...) と書けるようになることが、 JavaScript 初心者から一歩抜け出す大事なステップです。

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