首页 > 解决方案 > 当数组中的两位数很少时,查找最大数会返回错误值

问题描述

我试图找到数组中的最大数。但是只有当所有数字都是个位数时,我的代码才会给出正确的值。如果我包含一个两位数,它不会考虑它。

const numb = ['7', '10', '8', '6', '7'];
let arr1 = numb[0];
for (let i = 1; i < numb.length; i++) {
  if (numb[i] >= arr1) {
    arr1 = numb[i];
  }
}

console.log(arr1);

const numb = ['7', '9', '8', '6', '7'];
let arr1 = numb[0];
for (let i = 1; i < numb.length; i++) {
  if (numb[i] >= arr1) {
    arr1 = numb[i];
  }
}

console.log(arr1);

第一个代码给我输出 8,它应该是 10。而第二个给我 9。我在这里缺少什么?

标签: javascriptarraysloops

解决方案


您正在比较字符串 - 这些是按字典顺序比较的。

const numb = [7, 10, 8, 6, 7];
let arr1 = numb[0];
for (let i = 1; i < numb.length; i++) {
  if (numb[i] >= arr1) {
    arr1 = numb[i];
  }
}
console.log(arr1);

另请注意,在数组中查找最大数的最简单方法是使用Math.max扩展。

const numb = [7, 10, 8, 6, 7];
let arr1 = Math.max(...numb);
console.log(arr1);


推荐阅读