我的功能' 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;
答案 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
中找到MaximumMath.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