1. ホーム
  2. javascript

[解決済み] 配列中の最大値のインデックスを返す

2022-04-22 17:56:45

質問

こんなのあるんだ。

var arr = [0, 21, 22, 7];

最高値のインデックスを別の変数に返すにはどうしたらいいでしょうか?

どのように解決するのですか?

信頼性が高く、古いブラウザでも動作するので、おそらくこれが一番良い方法でしょう。

function indexOfMax(arr) {
    if (arr.length === 0) {
        return -1;
    }

    var max = arr[0];
    var maxIndex = 0;

    for (var i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            maxIndex = i;
            max = arr[i];
        }
    }

    return maxIndex;
}

こんなワンライナーもあります。

let i = arr.indexOf(Math.max(...arr));

これは必要な比較の2倍を実行し、その結果 RangeError が、大きな配列では 私なら、この関数にこだわりますね。