JavaScript | 「関数で複数の値を返す」というテクニックをAPI整形・フォーム検証など実務っぽい応用

JavaScript JavaScript
スポンサーリンク

では「APIからデータを取ってきて整形し、UIに表示する」という実務っぽい流れを、ブラウザ上で動くサンプル形式で解説します。
初心者向けに 関数で複数値を返すテクニック も活用します。


サンプル概要

  • モックAPI(模擬データ)を使用
  • データ整形関数で、必要な情報だけを取り出す
  • UIに表示(HTML + JavaScript)

1) HTML(簡易UI)

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>API整形サンプル</title>
</head>
<body>
<h1>ユーザー情報表示</h1>
<button id="loadBtn">ユーザー情報を取得</button>
<ul id="userList"></ul>

<script src="app.js"></script>
</body>
</html>
HTML

2) JavaScript(app.js)

// 模擬APIデータ
const mockApiData = [
  { first_name: "Taro", last_name: "Yamada", age: 25, avatar: "https://i.pravatar.cc/50?img=1" },
  { first_name: "Hanako", last_name: "Suzuki", age: 30, avatar: "https://i.pravatar.cc/50?img=2" },
  { first_name: "Jiro", last_name: "Tanaka", age: 22, avatar: "https://i.pravatar.cc/50?img=3" }
];

// 🔹 データ整形関数
function formatUser(rawUser) {
  // ユーザー名と年齢、画像URLをまとめて返す
  return {
    name: `${rawUser.first_name} ${rawUser.last_name}`,
    age: rawUser.age,
    avatar: rawUser.avatar
  };
}

// 🔹 データ取得関数(模擬API呼び出し)
function fetchUsers() {
  // 通常は fetch() を使いますが、ここでは模擬データを Promise で返す
  return new Promise((resolve) => {
    setTimeout(() => resolve(mockApiData), 500);
  });
}

// 🔹 UI表示関数
function displayUsers(users) {
  const ul = document.getElementById("userList");
  ul.innerHTML = ""; // 既存リストをクリア

  users.forEach(rawUser => {
    const user = formatUser(rawUser); // 整形
    const li = document.createElement("li");
    li.innerHTML = `
      <img src="${user.avatar}" alt="${user.name}" style="vertical-align:middle; width:50px; height:50px; border-radius:50%;">
      <strong>${user.name}</strong>(${user.age}歳)
    `;
    ul.appendChild(li);
  });
}

// 🔹 ボタンイベント
document.getElementById("loadBtn").addEventListener("click", async () => {
  const rawUsers = await fetchUsers();  // API取得
  displayUsers(rawUsers);               // UI表示
});
JavaScript

✅ ポイント解説

  1. 関数で複数値を返す
return {
  name: `${rawUser.first_name} ${rawUser.last_name}`,
  age: rawUser.age,
  avatar: rawUser.avatar
};
HTML

1つの関数で「名前・年齢・画像URL」をまとめて返す
呼び出し側で user.name, user.age, user.avatar として簡単にアクセスできる

  1. 模擬API
    • 実務では fetch("https://api.example.com/users") で取得します
    • Promise を使うと、非同期処理もそのまま扱える
  2. UI表示
    • HTML要素 <ul><li> を生成して挿入
    • 整形関数で加工したデータをそのまま表示

💡 拡張アイデア(実務っぽく)

  • 年齢が18歳未満のユーザーを除外して表示する
    formatUser 内で条件分岐して返す
  • エラー処理を追加して、API失敗時に「取得できませんでした」と表示
  • クリックしたユーザーだけ詳細をモーダル表示

これをブラウザで開くと:

  1. 「ユーザー情報を取得」ボタンをクリック
  2. 0.5秒後に模擬APIデータが整形されて表示

関数で複数値をまとめて返すテクニックがそのまま実務に使える例です。

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