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

如何合并多个不同对象中相同key对应的items数组

问题原因

你原有代码的嵌套问题是因为每次更新colorData时,直接将整个旧的colorData数组作为新数组的第一个元素,而非展开旧数组的内容:

// 错误写法 直接把旧数组放新数组第一个位置,产生嵌套
colorData = blueData.items ? [colorData, ...blueData.items] : colorData

修复方案

方案1:修改原有写法逻辑

只需把旧数组也做展开操作即可:

const blueData = {
    "items": [
        {
            "id": 35,
            "revision": 1,
            "updatedAt": "2021-09-10T14:29:54.595012Z",
        },
    ]
}

const redData = {}

const greenData = {
    "items": [
        {
            "id": 36,
            "revision": 1,
            "updatedAt": "2021-09-10T14:31:07.164368Z",
        }
    ]
}

let colorData = []
// 展开旧数组 + 展开新的items元素
colorData = blueData.items ? [...colorData, ...blueData.items] : colorData
colorData = redData.items ? [...colorData, ...redData.items] : colorData
colorData = greenData.items ? [...colorData, ...greenData.items] : colorData

方案2:更简洁的批量处理写法

如果后续还要新增其他颜色数据,推荐用flatMap批量处理,代码更易维护:

const colorData = [blueData, redData, greenData]
  // 没有items的对象返回空数组,flatMap会自动抹平空数组层级
  .flatMap(item => item.items || [])

两种方案最终得到的colorData都是单层级结构,内容为:

[
  { id: 35, revision: 1, updatedAt: '2021-09-10T14:29:54.595012Z' },
  { id: 36, revision: 1, updatedAt: '2021-09-10T14:31:07.164368Z' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:09:03