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

JavaScript合并对象同键不同值问题求助(附错误代码)

修正合并对象同名键值的JavaScript代码

你的代码存在几个核心问题:

  • 存储数量时用了字符串类型,后续相加会变成字符串拼接而非数值计算
  • else分支错误使用Object.assign(该方法用于合并对象,不适合数值累加)
  • 函数未返回处理后的目标数组

以下是修正后的代码:

function storage(data) {
  let object = {};

  data.forEach(line => {
    let [product, quantity] = line.split(' ');
    // 转换为数值类型,避免字符串拼接
    const numQuantity = Number(quantity);
    if (!object[product]) {
      object[product] = numQuantity;
    } else {
      // 直接进行数值累加
      object[product] += numQuantity;
    }
  });

  // 将对象转换为期望格式的数组并返回
  return Object.entries(object).map(([product, quantity]) => `${product} ${quantity}`);
}

// 测试调用
const result = storage(['tomatoes 10', 'coffee 5', 'olives 100', 'coffee 40']);
console.log(result); // 输出: ['tomatoes 10', 'coffee 45', 'olives 100']

关键修正说明:

  • 拆分后立即把quantity转为数字类型,确保累加是数值运算而非字符串拼接
  • 移除冗余的Object.assign调用,直接对对象属性进行数值累加
  • 通过Object.entries将对象转为键值对数组,再用map生成目标格式的字符串数组,最后返回结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:25:26