JavaScript | continue文

JavaScript JavaScript
スポンサーリンク

では 本番向けテンプレート:条件判定関数化+部署単位集計+非同期処理+continue を作ります。
これを使えばすぐに実務で大量データを処理できます。


本番向けテンプレート

条件:

  1. 名前が空 → スキップ
  2. 非アクティブ → スキップ
  3. スコア(score)が 70 未満 → スキップ
  4. 部署単位で条件を満たすユーザーがいなければスキップ
  5. 条件を満たすユーザーだけ非同期で並列処理
  6. 条件判定を関数化してルール変更を簡単に

コード例

// 擬似API: 部署ごとのユーザー取得
async function fetchDepartmentUsers(deptName) {
  const data = {
    "営業部": [
      {name:"Alice", active:true, score:85},
      {name:"Bob", active:false, score:90},
      {name:"Charlie", active:true, score:60},
    ],
    "開発部": [
      {name:"David", active:true, score:95},
      {name:"Eve", active:true, score:65},
      {name:"", active:true, score:80}
    ],
    "人事部": [
      {name:"", active:false, score:50},
      {name:"Frank", active:false, score:80}
    ]
  };
  return data[deptName] || [];
}

// 条件判定関数
function isValidUser(user, minScore = 70) {
  if (!user.name) return false;
  if (!user.active) return false;
  if (user.score < minScore) return false;
  return true;
}

// 非同期処理関数(例: DB保存やAPI呼び出し)
function processUser(user) {
  return new Promise(resolve => {
    setTimeout(() => {
      console.log(`処理完了: ${user.name}, score=${user.score}`);
      resolve();
    }, 200);
  });
}

// 部署単位集計関数(例: 有効ユーザー数)
function summarizeDepartment(deptName, validUsers) {
  console.log(`${deptName} に有効ユーザー ${validUsers.length} 人`);
}

// 本番向けメイン処理
async function main() {
  const departments = ["営業部", "開発部", "人事部"];
  const minScore = 70; // スコアの閾値は簡単に変更可能

  for (const dept of departments) {
    console.log(`--- ${dept} 処理開始 ---`);
    const users = await fetchDepartmentUsers(dept);

    const validUsers = [];
    for (const user of users) {
      if (!isValidUser(user, minScore)) continue; // 条件を満たさないユーザーはスキップ
      validUsers.push(user);
    }

    if (validUsers.length === 0) {
      console.log(`${dept} に条件を満たすユーザーなし → スキップ`);
      continue; // 部署単位でスキップ
    }

    summarizeDepartment(dept, validUsers); // 部署単位集計
    await Promise.all(validUsers.map(user => processUser(user))); // 並列処理

    console.log(`--- ${dept} 処理完了 ---`);
  }

  console.log("全部署処理完了");
}

main();
JavaScript

想定出力

--- 営業部 処理開始 ---
営業部 に有効ユーザー 1 人
処理完了: Alice, score=85
--- 営業部 処理完了 ---
--- 開発部 処理開始 ---
開発部 に有効ユーザー 1 人
処理完了: David, score=95
--- 開発部 処理完了 ---
--- 人事部 処理開始 ---
人事部 に条件を満たすユーザーなし → スキップ
全部署処理完了

ポイント(本番向け)

  1. 条件判定を関数化
    • ルール変更が簡単(例: minScore = 80 にするだけ)
    • ネストが浅く読みやすい
  2. 部署単位の集計関数
    • 有効ユーザー数や平均スコアなどをまとめて出力可能
    • 監査やレポート作成に便利
  3. 非同期並列処理
    • Promise.all で条件を満たすユーザーだけ高速処理
    • API呼び出しやDB書き込みの実務でそのまま応用可能
  4. continue の使いどころ
    • 条件に合わないユーザーをスキップ
    • 部署単位で条件を満たすユーザーなし → 外側ループもスキップ

💡 応用アイデア

  • 条件判定関数にログ出力を追加してスキップ理由を記録
  • 部署ごとの処理結果を JSON にまとめてレポート出力
  • 並列処理と集計を組み合わせて大規模データ処理にも対応
タイトルとURLをコピーしました