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

JavaScript中获取数组最值遇问题:Math.max方法失效求助

解决Math.max无法获取数组最值的问题

可能的问题及修复方案

1. 数据类型不匹配:price是字符串而非数字

如果data[i].price是字符串格式的数值,Math.max会返回NaN——因为它无法直接处理字符串类型的参数。修复时只需在存入数组前转换为数字:

let prices = []; // 避免用Array作为变量名,和内置构造函数冲突
jQuery.getJSON("price.json", function(data) {
  for (let i = 0; i < data.length; i++) {
    // 转换为浮点数,确保是数字类型
    prices.push(parseFloat(data[i].price));
  }
  let maximum = Math.max(...prices);
  console.log(maximum); // 此时可正常获取最大值
});

2. 异步执行顺序问题

jQuery.getJSON是异步操作,如果你在回调函数外部尝试访问prices或maximum,此时数组还未被填充,自然无法得到正确结果。所有依赖该数组的操作必须放在回调函数内部,也可以改用更现代的Promise风格写法:

async function getMaxPrice() {
  let prices = [];
  const data = await jQuery.getJSON("price.json").promise();
  for (let item of data) {
    prices.push(parseFloat(item.price));
  }
  let maximum = Math.max(...prices);
  console.log(maximum);
  return maximum;
}

// 调用函数获取结果
getMaxPrice();

3. 边界情况处理:数组为空

如果JSON数据为空或没有price字段,数组会是空的,Math.max(...[])会返回-Infinity。可以添加判断避免异常:

let maximum = prices.length > 0 ? Math.max(...prices) : null;

内容的提问来源于stack exchange,提问作者J.K

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:55:22