では「最大値とそのインデックス(位置)を返す関数」を作ってみましょう。
これは 値と位置を同時に管理する 練習です。
目標
- 配列を順番に調べる
- 最大値を見つけると同時に、その位置(インデックス)も記録する
{ value: 最大値, index: インデックス }の形で返す
✅ 模範解答(for文バージョン)
function findMaxWithIndex(arr) {
if (arr.length === 0) return null; // 空配列ならnull
let max = arr[0];
let maxIndex = 0;
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
maxIndex = i; // インデックスも更新
}
}
return { value: max, index: maxIndex };
}
// 実行例
console.log(findMaxWithIndex([3, 7, 2, 9, 5]));
// { value: 9, index: 3 }
JavaScript✅ 模範解答(for…of + entriesバージョン)
function findMaxWithIndex(arr) {
if (arr.length === 0) return null;
let max = arr[0];
let maxIndex = 0;
for (const [i, num] of arr.entries()) {
if (num > max) {
max = num;
maxIndex = i;
}
}
return { value: max, index: maxIndex };
}
console.log(findMaxWithIndex([10, 25, 7, 30, 18]));
// { value: 30, index: 3 }
JavaScript✅ 模範解答(forEachバージョン)
function findMaxWithIndex(arr) {
if (arr.length === 0) return null;
let max = arr[0];
let maxIndex = 0;
arr.forEach((num, i) => {
if (num > max) {
max = num;
maxIndex = i;
}
});
return { value: max, index: maxIndex };
}
console.log(findMaxWithIndex([4, 12, 8, 6]));
// { value: 12, index: 1 }
JavaScript💡 解説
- 最大値だけでなくインデックスも更新するのがポイント。
for...ofではarr.entries()を使うと[インデックス, 値]のペアで取り出せる。- 空配列のときは
nullを返すようにしておくと安全。
🔥 発展練習
- 「最小値とそのインデックス」を返す関数に書き換える
- 「最大値と最小値の両方」を返す関数を作る
