配列内の最大値のインデックスを返す 質問する

配列内の最大値のインデックスを返す 質問する

私はこれを持っています:

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

最高値のインデックスを別の変数に返す最適な方法は何ですか?

ベストアンサー1

これは信頼性が高く、古いブラウザでも動作するため、おそらく最善の方法です。

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大きな配列では がスローされます。私は 関数に固執します。

おすすめ記事