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

如何简化实现将数组中同键名对象合并为单个大对象

合并共享相同顶级键的嵌套对象数组

我懂你现在的需求:把一个由多个单键对象组成的数组,合并成一个顶级键对应合并后嵌套对象的结构——就像你给出的示例,将[{3:{"3_04":"answer1"}},{3:{"3_10":"other answer"}},{6:{"6_01":"Eos ut numquam dolor"}}]转换成{ 3: { "3_04": "answer1", "3_10": "other answer" }, 6: { "6_01": "Eos ut numquam dolor" } }。

你的现有代码能实现功能,但可以用Array.prototype.reduce大幅简化逻辑,让代码更简洁易读:

// 基于你的原始数组this.tempSurveyTextAnswersArray处理
const mergedAnswers = this.tempSurveyTextAnswersArray.reduce((acc, currentItem) => {
  // 获取当前对象的唯一顶级键
  const topLevelKey = Object.keys(currentItem)[0];
  // 初始化累加器中的对应键(如果不存在的话)
  if (!acc[topLevelKey]) {
    acc[topLevelKey] = {};
  }
  // 合并嵌套对象的属性
  Object.assign(acc[topLevelKey], currentItem[topLevelKey]);
  return acc;
}, {});

// 合并到submitData中,保留原有数据
this.submitData = { ...(this.submitData || {}), ...mergedAnswers };

代码说明

  • reduce是处理这类累加合并场景的绝佳工具,它从初始空对象{}开始遍历数组
  • 每次遍历取出当前对象的唯一顶级键topLevelKey
  • 若累加器acc中不存在该键,则先初始化一个空对象作为其值
  • 通过Object.assign将当前对象的嵌套属性合并到累加器对应键的对象中
  • 最后用扩展运算符...把合并结果与原submitData合并,相比传统Object.assign写法更直观简洁

这个写法去掉了多余的中间数组和嵌套循环,逻辑清晰,可读性强,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 04:57:43