JavaScript | 最大値とそのインデックス(位置)を返す関数

JavaScript JavaScript
スポンサーリンク

では「最大値とそのインデックス(位置)を返す関数」を作ってみましょう。
これは 値と位置を同時に管理する 練習です。


目標

  • 配列を順番に調べる
  • 最大値を見つけると同時に、その位置(インデックス)も記録する
  • { 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 を返すようにしておくと安全。

🔥 発展練習

  • 「最小値とそのインデックス」を返す関数に書き換える
  • 「最大値と最小値の両方」を返す関数を作る
タイトルとURLをコピーしました