【发布时间】:2020-06-05 13:28:38
【问题描述】:
我必须在数组中找到最大值,所以我编写了一个用于循环的函数,同时还使用了三元运算符,我注意到如果我使用 if-else,只要反转循环的方向就会改变输出加上输出也不同。此外,改变 'a' 在数组中的位置也会改变输出。
const array2 = ['a', 3, 4, 2];
function biggestNumberInArray(arr) {
let max=0;
for (let i = 0; i < arr.length; i++) {
max = max>arr[i]?max:arr[i];
}
return max;
}
function biggestNumberInArray2(arr) {
let max=0;
for (let i = arr.length - 1; i >= 0; i--) {
max = max>arr[i]?max:arr[i];
}
return max;
}
console.log(biggestNumberInArray(array2));
console.log(biggestNumberInArray2(array2));
运行第一个函数时输出为4
运行第二个函数时输出是'a'
【问题讨论】:
-
问:您有没有通过调试器查看“max”在什么时候被错误地更改为错误的数字?
-
@Shivansh 你认为
'a'与数字相比会转换成什么? -
@PatrickRoberts 我认为它会更改为它的 ASCII 值,即 97
-
@Shivansh 那你就错了。
-
有趣的是,
4 > 'a'、4 < 'a'和4 == 'a'都是假的。
标签: javascript arrays loops if-statement conditional-operator