for循环没有找到数组的最大值(Javascript)

时间:2017-05-28 03:40:44

标签: javascript arrays for-loop

我的功能' extremeValue'需要2个参数,一个数组和一个字符串" Maximum"或" Minimum",并根据该字符串返回数组的最大值或最小值。我使用了一个示例数组'值'通过该函数,当它计算出最小值时,最大值就是数组的最后一个值。我的代码出了什么问题?



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] > array[i-1]) {
				max = array[i];
			}
		}
		return max;
	}
	else if (maxmin === "Minimum") {
		var min = array[0];
		for (var j = 1; j < array.length; j++) {
			if (array[j] < array[j-1]) {
				min = array[j];
			}
		}
		return min;
	}
}
            
console.log(extremeValue(values, "Maximum")); 
console.log(extremeValue(values, "Minimum"));
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:3)

使用最大值更改检查。

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.max.apply( Math, values );

从values.and

中找到Maximum
Math.min.apply( Math, values );

表示最小值。

答案 1 :(得分:0)

在每个循环中,您必须将项目与最大(或最小)值进行比较,而不是在项目之前:

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"));

答案 2 :(得分:0)

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

doHide