組み込み関数

JavaScriptのevery()入門|全要素が条件を満たすか判定する

every()は、配列のすべての要素が指定した条件を満たすかどうかを判定するメソッドです。戻り値はtrueまたはfalseです。入力データの一括バリデーションや、配列の状態確認など、「全件チェック」が必要な場面で使います。

基本的な使い方

every()はコールバック関数がすべての要素に対してtrueを返した場合のみtrueを返します。falseを返す要素が見つかった時点で検索を停止します。

JavaScript
// 基本構文
const result = array.every(function(element, index, array) {
  return 条件式;
});

// アロー関数を使った書き方
const result = array.every(element => 条件式);

空の配列に対してevery()を呼ぶと、常にtrueが返されます。これは数学的な「空真」(vacuous truth)に基づく仕様です。

JavaScript
const numbers = [2, 4, 6, 8, 10];

// すべて偶数か
const allEven = numbers.every(num => num % 2 === 0);
console.log(allEven);

// すべて10以下か
const allSmall = numbers.every(num => num <= 10);
console.log(allSmall);

// すべて5以上か
const allAboveFive = numbers.every(num => num >= 5);
console.log(allAboveFive);

// 空配列の場合
const emptyResult = [].every(x => x > 0);
console.log(emptyResult);
実行結果
true
true
false
true

バリデーションでの活用

every()の最も一般的な用途はデータのバリデーションです。フォームの全フィールドが入力済みか、全項目がルールに準拠しているか、といったチェックに最適です。

JavaScript
// フォームバリデーション
const formData = [
  { field: "name", value: "田中太郎", required: true },
  { field: "email", value: "tanaka@example.com", required: true },
  { field: "phone", value: "", required: false },
  { field: "address", value: "東京都渋谷区", required: true }
];

// 必須フィールドがすべて入力済みか
const isValid = formData.every(item => {
  if (item.required) return item.value.trim() !== "";
  return true;
});
console.log("フォーム有効:", isValid);

// パスワード要件チェック
const password = "MyP@ssw0rd";
const rules = [
  { test: (p) => p.length >= 8, msg: "8文字以上" },
  { test: (p) => /[A-Z]/.test(p), msg: "大文字を含む" },
  { test: (p) => /[0-9]/.test(p), msg: "数字を含む" },
  { test: (p) => /[!@#$%]/.test(p), msg: "記号を含む" }
];

const meetsAll = rules.every(rule => rule.test(password));
console.log("パスワード要件:", meetsAll);

// 未達成のルールを表示
rules.forEach(rule => {
  const status = rule.test(password) ? "OK" : "NG";
  console.log(`  ${status}: ${rule.msg}`);
});
実行結果
フォーム有効: true
パスワード要件: true
  OK: 8文字以上
  OK: 大文字を含む
  OK: 数字を含む
  OK: 記号を含む

実践的な活用例

every()は型チェックやデータ整合性の検証、配列同士の比較にも使えます。

JavaScript
// 全タスクが完了しているか
const tasks = [
  { title: "設計", status: "done" },
  { title: "実装", status: "done" },
  { title: "テスト", status: "in-progress" }
];

const allDone = tasks.every(task => task.status === "done");
console.log("全タスク完了:", allDone);

// 2つの配列が同じ内容か比較
function arraysEqual(a, b) {
  return a.length === b.length && a.every((val, i) => val === b[i]);
}
console.log(arraysEqual([1, 2, 3], [1, 2, 3]));
console.log(arraysEqual([1, 2, 3], [1, 2, 4]));

// 型の一貫性チェック
const data = [10, 20, 30, 40];
const allNumbers = data.every(val => typeof val === "number");
console.log("すべて数値:", allNumbers);
実行結果
全タスク完了: false
true
false
すべて数値: true
every()の早期終了

every()falseを返す要素が見つかった時点で残りの要素をチェックせずに終了します。大きな配列でも、先頭付近で条件を満たさない要素があれば高速に結果を返します。

空配列の罠

[].every()は常にtrueを返します。これは意図しない動作を招く場合があります。配列が空でないことを先に確認するか、array.length > 0 && array.every(...)のように条件を追加してください。

まとめ

  • every()はすべての要素が条件を満たす場合にtrueを返す
  • falseが見つかった時点で検索を停止する(早期終了)
  • 空の配列に対しては常にtrueを返す(空真)
  • フォームバリデーションやデータ整合性チェックに最適
  • some()と対になるメソッドとして覚えておく