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

合并多对象并提取各属性的最大值

嵌套对象属性的最大值归约实现

你的核心需求是对每个顶层属性(如prop1、prop2)下的子属性(x、y)分别提取所有版本对象中的最大值,最终合并成一个单一对象。

原代码的问题

你当前的代码存在两个关键错误:

  1. 直接比较两个对象(highest > value)——JavaScript中对象比较的是引用地址,而非属性值,这会导致逻辑完全失效
  2. 未深入到子属性层级,无法针对x、y分别计算最大值

修正后的实现代码

Object.values(input).reduce((highestValues, objData) => {
  Object.entries(objData).forEach(([propKey, propValue]) => {
    // 初始化当前属性的最大值容器
    if (!highestValues[propKey]) {
      highestValues[propKey] = { ...propValue };
      return;
    }
    // 遍历子属性,逐个更新最大值
    Object.entries(propValue).forEach(([subKey, subValue]) => {
      if (subValue > highestValues[propKey][subKey]) {
        highestValues[propKey][subKey] = subValue;
      }
    });
  });
  return highestValues;
}, {});

代码逻辑说明

  1. 提取版本对象数组:用Object.values(input)把输入对象的所有版本(如1.0、2.0对应的对象)提取为数组
  2. 累积最大值结果:外层reduce用来逐步构建最终的最大值对象
  3. 处理每个顶层属性:
    • 如果结果对象中还没有当前属性,先复制该属性的所有子值作为初始最大值
    • 遍历该属性的子属性(x、y),将当前值与结果中已有的值比较,保留更大的那个
  4. 返回迭代结果:每次reduce迭代后返回更新后的最大值对象

这段代码具备通用性,即使后续新增其他子属性(如z),也能自动适配,无需修改核心逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 06:12:09