我已经做了这个解决方案。
var arr=[4,10,24,3,2,2,19];
var max = arr[0];
var maxIndex = 0;
var min = arr[0];
var minIndex = 0;
for (var i = 1; i < arr.length; i++) {
if (arr[i] > max) {
maxIndex = i;
max = arr[i];
}
}
for (var i = 1; i < arr.length; i++) {
if (arr[i] < min) {
minIndex = i;
min = arr[i];
}
}
alert(maxIndex);
alert(minIndex);
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来完成上述任务?
好吧,reduce您可以使用index和array参数:
var arr=[4,10,24,3,2,2,19];
var maxIndex = arr.reduce(function(highestIndex, element, index, array){
return element > array[highestIndex] ? index : highestIndex;
}, 0);
Run Code Online (Sandbox Code Playgroud)
对于最小值和最大值:
var limits = arr.reduce(function(limits, element, index, array){
limits.max = element > array[limits.max] ? index : limits.max;
limits.min = element < array[limits.min] ? index : limits.min;
return limits;
}, { max : 0, min : 0 });
//limits.max === Highest value index,
//limits.min === Lowest value index
Run Code Online (Sandbox Code Playgroud)