您能解释一下下面代码中的“else if”语句如何返回数组中的第二大数字吗?
特别是“else if 语句”中没有 AND 运算符 (&&)。我的意思是例如:
else if (max2 < array[i] && max1 > array[i])
我发现人们在 stackOverflow 上使用这种方法,但他们没有给出任何详细的解释(“为什么它有效”):
var arr1 = [2, 3, 1, 6, 100, 49, 5, 7, 8, 9];
function getSecondMaxNumber(array) {
var max1 = 0;
var max2 = 0;
for (var i = 0; i <= array.length; i++) {
if (max1 < array[i]) {
max1 = array[i];
} else if (max2 < array[i]) {
max2 = array[i];
}
}
return max2;
}
console.log(getSecondMaxNumber(arr1));
更新
上面的方法是错误的,正如哈桑在下面评论的那样。
我决定使用:
var arr1 = [2, 3, 1, 6, 100, 49, 5, 7, 8, 9];
function getSecondMaxNumber(array) {
function sortNumbers(a, b) { //Compare numbers.
return a - b;
}
var arrSorted = array.sort(sortNumbers); //Set up sorting.
return arrSorted[arrSorted.length - 2]; //Choose the second largest number in an array.
}
console.log(getSecondMaxNumber(arr1)); //Show me that number.
最佳答案
您不需要 &&
因为if
条件已经消除了max1
的可能性小于array[i]
。您无法访问else if
没有if
的条件第一次失败。
旁注,循环条件应该是 <
而不是<=
.
关于javascript - 使用 JavaScript If...Else 语句查找数组中下一个最大的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609835/