では「最大値と最小値の両方を返す関数」を作ってみましょう。
これは 複数の比較を同時に管理する 練習になります。
目標
- 配列を順番に調べる
- 最大値と最小値を同時に更新していく
{ max: 最大値, min: 最小値 }の形で返す
✅ 模範解答(for文バージョン)
function findMaxAndMin(arr) {
if (arr.length === 0) return null; // 空配列ならnull
let max = arr[0];
let min = arr[0];
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
if (arr[i] < min) {
min = arr[i];
}
}
return { max, min };
}
// 実行例
console.log(findMaxAndMin([3, 7, 2, 9, 5]));
// { max: 9, min: 2 }
JavaScript✅ 模範解答(for…ofバージョン)
function findMaxAndMin(arr) {
if (arr.length === 0) return null;
let max = arr[0];
let min = arr[0];
for (const num of arr) {
if (num > max) max = num;
if (num < min) min = num;
}
return { max, min };
}
console.log(findMaxAndMin([10, 25, 7, 30, 18]));
// { max: 30, min: 7 }
JavaScript✅ 模範解答(forEachバージョン)
function findMaxAndMin(arr) {
if (arr.length === 0) return null;
let max = arr[0];
let min = arr[0];
arr.forEach(num => {
if (num > max) max = num;
if (num < min) min = num;
});
return { max, min };
}
console.log(findMaxAndMin([4, 12, 8, 6]));
// { max: 12, min: 4 }
JavaScript💡 解説
- 最大値と最小値を同時に管理するのがポイント。
- 配列が空の場合は
nullを返すようにして安全にする。 for文・for...of・forEachいずれでも書けるが、途中で止める必要がないのでforEachも相性が良い。
🔥 発展練習
- 最大値と最小値だけでなく「そのインデックス」も一緒に返す
- 数字だけでなく「文字列の配列」で「最も長い文字列と最も短い文字列」を返す
