关于javascript:通过最大值获取数组索引?

Get array index by Max value?

本问题已经有最佳答案,请猛点这里访问。

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

1
2
3
4
5
myArray = [];
myArray[1] = 10;
myArray[2] = 99;

alert(Math.max(myArray));

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

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


1.如果只需要第一个实例:

1
2
3
4
5
var arrayMaxIndex = function(array) {
  return array.indexOf(Math.max.apply(null, array));
};

console.log(arrayMaxIndex([1,2,7,2])); //outputs 2

2.如果您希望所有出现的最大值:

1
2
3
4
5
6
7
8
9
10
11
12
13
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]