基于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
相关产品推荐
相关产品推荐

