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

基于ImpactedCIs数组拆分items对象,生成新对象数组需求

问题描述

现有一个包含多个对象的items数组,每个对象都带有ImpactedCIs数组字段。需要将每个对象基于其ImpactedCIs数组展开,生成新的对象数组——把原对象的ImpactedCIs数组的每个元素单独作为新对象的ImpactedCIs字段值,同时保留原对象的其他所有字段。

示例输入

"items": [
    {
        "ImpactedCIs": ["MJUDKHJ112O","FTTM_ZTF647"],
        "CMSStatus": "5",
        "ActualStartTime": "1700003455",
        "ActualEndTime": "1700003455",
        "PM": "Sample",
        "PMContact": "45345435"
    }
]

示例输出

"items": [
    {
        "ImpactedCIs": "MJUDKHJ112O",
        "CMSStatus": "5",
        "ActualStartTime": "1700003455",
        "ActualEndTime": "1700003455",
        "PM": "Sample",
        "PMContact": "45345435"
    },
    {
        "ImpactedCIs": "FTTM_ZTF647",
        "CMSStatus": "5",
        "ActualStartTime": "1700003455",
        "ActualEndTime": "1700003455",
        "PM": "Sample",
        "PMContact": "45345435"
    }
]

解决方案

可以使用JavaScript的flatMap方法结合对象解构快速实现需求,代码如下:

const originalItems = [
    {
        "ImpactedCIs": ["MJUDKHJ112O","FTTM_ZTF647"],
        "CMSStatus": "5",
        "ActualStartTime": "1700003455",
        "ActualEndTime": "1700003455",
        "PM": "Sample",
        "PMContact": "45345435"
    }
];

const expandedItems = originalItems.flatMap(item => {
    // 分离ImpactedCIs数组与其他字段
    const { ImpactedCIs, ...restProps } = item;
    // 遍历数组元素,生成对应新对象
    return ImpactedCIs.map(ci => ({
        ImpactedCIs: ci,
        ...restProps
    }));
});

console.log(expandedItems);

关键逻辑说明

  • flatMap方法:先对原数组每个元素做映射处理,再将结果扁平化,一步完成“展开+合并”的操作,避免额外的数组扁平化步骤。
  • 对象解构:通过{ ImpactedCIs, ...restProps }快速拆分出需要展开的数组字段,以及需要保留的其他所有字段。
  • map遍历:对ImpactedCIs数组的每个元素,生成包含该元素和原对象其余字段的新对象,最终组成展开后的数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 20:50:12