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

JavaScript如何检测重复key并合并对应属性生成目标对象

问题原因
  • 你使用map返回的是多个独立对象组成的数组,Object.assign合并数组时会把数组的索引作为新对象的键,不会自动合并相同外层key的属性
  • 缺少重复外层key的判断和属性合并逻辑,自然无法得到嵌套合并的结果
修正后的代码
const output = arr.reduce((acc, item) => {
  // 拆分key为外层前缀和内层属性名
  const [prefix, prop] = item.key.split('_');
  // 外层前缀不存在时先初始化空对象
  if (!acc[prefix]) {
    acc[prefix] = {};
  }
  // 为对应前缀的对象新增属性,值设为true
  acc[prefix][prop] = true;
  return acc;
}, {}); // 初始值为空的结果对象
console.log(output);
代码说明
  • 采用Array.prototype.reduce遍历数组,第一个参数为累加处理函数,第二个参数是初始的空结果对象
  • 每次遍历拆分key后先判断结果对象中是否已存在对应前缀的内层对象,不存在就先初始化
  • 直接给内层对象新增属性即可自动完成重复前缀的属性合并,运行后输出和你预期的结构完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 18:00:03