JavaScript | 平均値以上の数だけを集める関数

JavaScript JavaScript
スポンサーリンク

では「平均値以上の数だけを集める関数」を作ってみましょう。
これは 平均値を計算してから条件でフィルタする 練習です。


目標

  1. 配列の平均値を求める
  2. 平均値以上の要素だけを新しい配列に入れる
  3. その配列を返す

✅ 模範解答(for文バージョン)

function getAboveAverage(arr) {
  if (arr.length === 0) return []; // 空配列なら空の配列を返す

  // 平均値を計算
  let total = 0;
  for (let i = 0; i < arr.length; i++) {
    total += arr[i];
  }
  const average = total / arr.length;

  // 平均以上の要素を集める
  const result = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] >= average) {
      result.push(arr[i]);
    }
  }

  return result;
}

// 実行例
console.log(getAboveAverage([3, 7, 2, 9, 5])); 
// 平均は 5.2 → [7, 9]
JavaScript

✅ 模範解答(for…ofバージョン)

function getAboveAverage(arr) {
  if (arr.length === 0) return [];

  const total = arr.reduce((sum, num) => sum + num, 0);
  const average = total / arr.length;

  const result = [];
  for (const num of arr) {
    if (num >= average) {
      result.push(num);
    }
  }

  return result;
}

console.log(getAboveAverage([10, 20, 30, 40]));
// 平均は25 → [30, 40]
JavaScript

✅ 模範解答(forEachバージョン)

function getAboveAverage(arr) {
  if (arr.length === 0) return [];

  let total = 0;
  arr.forEach(num => total += num);
  const average = total / arr.length;

  const result = [];
  arr.forEach(num => {
    if (num >= average) {
      result.push(num);
    }
  });

  return result;
}

console.log(getAboveAverage([4, 6, 8]));
// 平均は6 → [6, 8]
JavaScript

💡 解説

  • 2段階処理がポイント
    1. まず平均値を計算する
    2. その平均値を基準にフィルタする
  • forEach を2回使ってもOK(1回目で合計、2回目で条件チェック)。
  • reduce を使うと合計を一行で書ける。

🔥 発展練習

  • 平均値「以下」の数だけを集める関数に書き換える
  • 平均値との差(偏差)を計算して、新しい配列にする

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