JavaScript | 関数から複数の値を返す方法

JavaScript JavaScript
スポンサーリンク

練習問題①:calcStats(numbers)

数値の配列を受け取り、合計(sum)、平均(average)、最大値(max)、最小値(min) をオブジェクトで返す関数を作る。


✅ 模範解答

function calcStats(numbers) {
  const sum = numbers.reduce((total, n) => total + n, 0); // 配列の合計
  const average = sum / numbers.length;                   // 平均
  const max = Math.max(...numbers);                       // 最大値
  const min = Math.min(...numbers);                       // 最小値

  return { sum, average, max, min };
}

// 実行例
const stats = calcStats([10, 20, 30, 40, 50]);
console.log(stats);
// { sum: 150, average: 30, max: 50, min: 10 }
JavaScript

ステップ解説

  1. 合計を計算
    reduce で配列のすべての数を足す。
    [10,20,30,40,50]10+20+30+40+50 = 150
  2. 平均を計算
    合計 ÷ 配列の長さ → 150 ÷ 5 = 30
  3. 最大値・最小値を計算
    Math.max(...numbers) → 50
    Math.min(...numbers) → 10
  4. オブジェクトで返す
    { sum, average, max, min } で呼び出し側でも意味が分かりやすい。

💡 ポイント

  • 配列のスプレッド ...numbersMath.max / Math.min が使える。
  • 名前付きで返すので、呼び出し側で順序を気にせずアクセス可能。

練習問題②:swap(a, b)

2つの値を入れ替えて配列で返す関数を作る。


✅ 模範解答

function swap(a, b) {
  return [b, a]; // 順番を入れ替えて配列で返す
}

// 実行例
let [x, y] = swap(5, 10);
console.log(x); // 10
console.log(y); // 5
JavaScript

ステップ解説

  1. 関数に a=5, b=10 が入る。
  2. [b, a] で配列 [10, 5] を作る。
  3. 分割代入 [x, y] = ...x=10, y=5 に代入される。
  4. 元の値 5, 10 が入れ替わった状態で使える。

💡 ポイント

  • 配列で返すことで、順序さえ覚えていれば簡単に値を入れ替えられる。
  • 関数の外で [x, y] = swap(x, y) と書くと便利。
  • オブジェクトで返すことも可能だが、配列で返す方が「順序重視」の場合は短く書ける。

まとめ(両方の問題から学べること)

テーマ配列で返すオブジェクトで返す
複数値を順序で管理したい✅ swapのように簡単❌ 順序に意味がないので不向き
複数値に意味がある⚠ 順序を覚える必要がある✅ calcStatsやminMaxIndicesのように名前付きで安全
初心者向け配列は簡単だが意味が分かりにくい場合があるオブジェクトで返すと読みやすい、順序に依存しない
タイトルとURLをコピーしました