按最大值获取数组索引

Get array index by Max value?

本文关键字:索引 数组 获取 最大值      更新时间:2023-09-26

我找到了一些获得索引最大值的解决方案,但当我有这样的数组时,如何获得最大值:

myArray = [];
myArray[1] = 10;
myArray[2] = 99;
alert(Math.max(myArray));

我想得到最大值的索引。在这种情况下,它将是值为99的索引2。

我现在得到的结果是NaN.alert(Math.max(myArray));

1。如果您只想要第一个实例:

var arrayMaxIndex = function(array) {
  return array.indexOf(Math.max.apply(null, array));
};
console.log(arrayMaxIndex([1,2,7,2])); //outputs 2

2.如果您想要所有出现的最大值:

function getAllIndexes(arr, val) {
    var indexes = [], i = -1;
    while ((i = arr.indexOf(val, i+1)) != -1){
        indexes.push(i);
    }
    return indexes;
}
var arrayAllMaxIndexes = function(array){
    return getAllIndexes(array, Math.max.apply(null, array));
}
console.log(arrayAllMaxIndexes([1,2,7,2,7])); // outputs [2,4]

每个人都做ES6更新,所以这里是我的:

const arr = [1, 2, 3];
const max = Math.max.apply(Math, arr.map((i) => i));
const maxIndex = arr.indexOf(max);

使用reduce:也可以实现同样的效果

const getMax = (arr) => arr.reduce((acc, item) => (item > acc ? item : acc), arr[0]);