For循环未找到数组的最大值(Javascript)

For循环未找到数组的最大值(Javascript),javascript,arrays,for-loop,Javascript,Arrays,For Loop,我的函数“extremeValue”有两个参数,一个数组和一个字符串“Maximum”或“Minimum”,它根据该字符串返回数组的最大值或最小值。我使用了一个示例数组“values”来传递函数,虽然它可以很好地计算出最小值,但最大值是数组的最后一个值。我的代码怎么了 var值=[4,3,6,12,1,3,7]; 函数极值值(数组,最大值){ 如果(最大值==“最大值”){ var max=数组[0]; 对于(变量i=1;i数组[i-1]){ max=数组[i]; } } 返回最大值; } 否

我的函数“extremeValue”有两个参数,一个数组和一个字符串“Maximum”或“Minimum”,它根据该字符串返回数组的最大值或最小值。我使用了一个示例数组“values”来传递函数,虽然它可以很好地计算出最小值,但最大值是数组的最后一个值。我的代码怎么了

var值=[4,3,6,12,1,3,7];
函数极值值(数组,最大值){
如果(最大值==“最大值”){
var max=数组[0];
对于(变量i=1;i数组[i-1]){
max=数组[i];
}
}
返回最大值;
}
否则如果(最大最小值==“最小值”){
var min=数组[0];
对于(var j=1;j日志(极值(值,“最小”)在每个循环中,您必须将项目与最大(或最小)值进行比较,而不是在项目之前:

var values = [4, 3, 6, 12, 1, 3, 7];

function extremeValue(array, maxmin) {
    if (maxmin === "Maximum") {
        var max = array[0];
        for (var i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        return max;
    }
    else if (maxmin === "Minimum") {
        var min = array[0];
        for (var j = 1; j < array.length; j++) {
            if (array[j] < min) {
                min = array[j];
            }
        }
        return min;
    }
}

console.log(extremeValue(values, "Maximum")); 
console.log(extremeValue(values, "Minimum"));
var值=[4,3,6,12,1,3,7];
函数极值值(数组,最大值){
如果(最大值==“最大值”){
var max=数组[0];
对于(变量i=1;imax){
max=数组[i];
}
}
返回最大值;
}
否则如果(最大最小值==“最小值”){
var min=数组[0];
对于(var j=1;j
使用最大值更改检查

if (maxmin === "Maximum") {
    var max = array[0];
    for (var i = 1; i < array.length; i++) {
        if (array[i] > max) { //not just before 'array[i-1]'
            max = array[i];
        }
    }
    return max;
}
从值中查找最大值。和

Math.min.apply( Math, values );

获取最小值。

或者,您可以使用数学函数缩短代码:

var值=[4,3,6,12,1,3,7];
函数极值值(数组,最大值){
如果(最大值==“最大值”){
返回Math.max.apply(null,数组);
}
否则如果(最大最小值==“最小值”){
返回Math.min.apply(null,数组);
}
}
日志(极值(值,“最大”);

日志(极值(值,“最小”)@jared smith谢谢你的编辑。没问题。回答得好。
Math.min.apply( Math, values );