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

JavaScript遍历JSON查找指定字段并分组计算对应值最小值

JavaScript按cloud分组计算指标最小值实现方案

实现步骤

  • 初始化空对象作为分组容器,key为cloud取值,value为对应分组下的所有指标数值数组
  • 遍历接口返回的result数组,对每一项分别提取metric.cloud的分组名、value[1]的指标值,将字符串格式的指标值转为浮点数避免比较错误
  • 检查分组容器中是否存在当前分组名对应的数组,不存在则先初始化空数组,再将转换后的指标值存入对应数组
  • 遍历完成分组的容器,对每个分组的数值数组调用Math.min计算最小值,存入结果对象即可

完整可运行代码

基于你已写的遍历逻辑修改,直接替换原有循环部分即可:

response.json().then(function (data) {
    const resultList = data["data"]["result"]                    
    const groupMap = {}
    // 遍历完成分组
    for (let i = 0; i < resultList.length; i++) {
        const currentItem = resultList[i]
        const cloudName = currentItem.metric.cloud
        // 字符串转数值,避免字符串比较逻辑错误
        const metricVal = parseFloat(currentItem.value[1])
        // 初始化分组
        if (!groupMap[cloudName]) {
            groupMap[cloudName] = []
        }
        groupMap[cloudName].push(metricVal)
    }
    // 计算各分组最小值
    const minResult = {}
    for (const cloud in groupMap) {
        minResult[cloud] = Math.min(...groupMap[cloud])
    }
    // 输出结果,针对你给出的示例数据,输出为 {m1: 100, m2: 98.406375}
    console.log(minResult)
})

注意事项

  • 不要直接对字符串格式的数字做大小比较,字符串按字典序对比时会出现"99" > "100"的错误结果,必须先用parseFloat转为数值类型
  • 3000行的JSON数据量很小,上述遍历逻辑的性能完全满足需求,不需要额外做性能优化
  • 如果数据中存在无效值,可以在push数值前增加isNaN(metricVal)判断,过滤掉异常值避免最小值计算出错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 13:03:29