では「平均値以上の数だけを集める関数」を作ってみましょう。
これは 平均値を計算してから条件でフィルタする 練習です。
目標
- 配列の平均値を求める
- 平均値以上の要素だけを新しい配列に入れる
- その配列を返す
✅ 模範解答(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段階処理がポイント
- まず平均値を計算する
- その平均値を基準にフィルタする
forEachを2回使ってもOK(1回目で合計、2回目で条件チェック)。reduceを使うと合計を一行で書ける。
🔥 発展練習
- 平均値「以下」の数だけを集める関数に書き換える
- 平均値との差(偏差)を計算して、新しい配列にする
