every で「全員が条件を満たすか」を判定する
arr.every(x => x > 0)
every は、「配列のすべての要素が、ある条件を満たしているかどうか」を判定するメソッドです。 天才プログラマー視点で言うと、「ひとつでもダメならアウト、全員 OK なら true」という“厳しめのチェック”専用ツールです。
true か false を返すだけですが、その意味はとても重いです。
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は全員が正の数 → truevalues2はひとりでも負の数がいる → 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 初心者から一歩抜け出す大事なステップです。
