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

JavaScript获取数组对象value最小值时出现输出误判的技术求助

解决数组中value字段最小值获取的问题

你的代码存在两个问题导致异常输出:

  • console.log 放在循环内部,每遍历一个元素就输出一次当前的alzehemersmin,所以会看到多次输出;
  • data.value 是字符串类型,第一次赋值后alzehemersmin变成字符串,后续字符串比较会按字符ASCII码顺序判断(比如"10.267346"的首字符'1' ASCII码小于'9',会被误判为更小的值),导致错误覆盖最小值。

修正后的for...of循环代码

const AlzheimerData = [
    {
        "location": "world",
        "year": "2000",
        "value": "9.557819"
    },
    {
        "location": "world",
        "year": "2001",
        "value": "10.267346"
    },
    {
        "location": "world",
        "year": "2002",
        "value": "10.8148"
    },
    {
        "location": "world",
        "year": "2003",
        "value": "11.329527"
    }
]

// 初始化最小值为数字类型的最大值
let alzheimerMin = Number.MAX_VALUE;

for (const data of AlzheimerData) {
    // 将value转为数字后再比较
    const currentValue = Number(data.value);
    if (currentValue < alzheimerMin) {
        alzheimerMin = currentValue;
    }
}

// 循环结束后再输出最终最小值
console.log(alzheimerMin); // 输出 9.557819

更简洁的reduce写法

如果不想用循环,也可以用数组的reduce方法直接计算最小值:

const minValue = AlzheimerData.reduce((min, item) => {
    const current = Number(item.value);
    return current < min ? current : min;
}, Number.MAX_VALUE);

console.log(minValue); // 输出 9.557819

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:33:20