我找到了一些获取索引最大值的解决方案,但是当我有这样一个数组时,如何获取最大值:
myArray = [];
myArray[1] = 10;
myArray[2] = 99;
alert(Math.max(myArray));
我希望获得最大值的索引。在这种情况下,它是值为99的索引2。 我现在得到的结果是
NaN.alert(Math.max(myArray));
。我找到了一些获取索引最大值的解决方案,但是当我有这样一个数组时,如何获取最大值:
myArray = [];
myArray[1] = 10;
myArray[2] = 99;
alert(Math.max(myArray));
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]);
return array.indexOf(Math.max.apply({}, array));
。 - Dexygenfor (let i = 0 ; i < array.length ; i++) { if (array[i] === val) { indexes.push(i); } }
- Sámal RasmussenMath.max.apply(null, array)
如何工作的话,可以参考这个链接:https://stackoverflow.com/questions/24541600/how-does-applymath-arrayname-work-javascript - Sámal Rasmussen