You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何console.log(largest)输出9而非15?循环仅遍历至索引3?

问题原因与修复方案

你的代码里存在典型的类型错误:拆分字符串得到的数组元素是字符串类型,而非数字类型。字符串之间的比较是按字符的ASCII码逐位进行的,比如"10"和"9"对比时,第一个字符'1'的ASCII码小于'9',会被判定为"10" < "9";同理"15"和"9"对比时,也是"15" < "9",所以循环里不会更新最大值,最终输出"9"。

修复方法有两种:

  1. 拆分后直接将数组转为数字数组
let userInput = [6, '1 6 7 9 10 15'];
// 拆分后用map转成数字类型
let arr = userInput[1].split(" ").map(Number);
let largest = arr[0];
console.log(arr);
for (let i = 1; i < arr.length; i++) {
  if (arr[i] > largest) {
    largest = arr[i];
  }
}
console.log(largest); // 输出15
  1. 在比较时临时将字符串转为数字
let userInput = [6, '1 6 7 9 10 15'];
let arr = userInput[1].split(" ");
// 初始值就转成数字
let largest = Number(arr[0]);
console.log(arr);
for (let i = 1; i < arr.length; i++) {
  // 每次比较前转数字
  if (Number(arr[i]) > largest) {
    largest = Number(arr[i]);
  }
}
console.log(largest); // 输出15

更简洁的写法

如果不需要遍历过程,直接用Math.max可以一步得到最大值:

let userInput = [6, '1 6 7 9 10 15'];
let largest = Math.max(...userInput[1].split(" ").map(Number));
console.log(largest); // 输出15

内容的提问来源于stack exchange,提问作者Joshua

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 15:15:38