为了账号安全,请及时绑定邮箱和手机立即绑定

如何将一个包含数组的对象拆分为多个对象

如何将一个包含数组的对象拆分为多个对象

陪伴而非守候 2021-10-29 14:58:17
我想知道是否可以将一个对象拆分为多个对象。我有一个对象数组,其中包含另一个数组,我想知道是否可以为内部数组中的每个对象拆分这些对象。就像是:obj1 = [{  a: 1,  b: [{c: 2},{d: 3}],  e: 4}]到obj2 =[  {    a: 1,    b: [{c: 2}],    e: 4  },  {    a: 1,    b: [{d: 3}],    e: 4  }]对象总是以这种形式存在,无论是一个对象还是数百个对象。虽然一些对象中可能有更多字段,但只有一个字段带有数组。目前,我正在映射原始数组,然后在b数组内部再次映射以到达那里的每个对象。但是,我不知道从哪里开始,因为该地图的返回对象只是原始数组。我不知道如何拆分b数组并将其与原始数组映射。我想到了 {...orig, b: map()} 但我不认为它适用于每个对象
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

根据您帖子中的描述,您走在正确的轨道上。您必须遍历源对象,并在每次迭代中遍历b数组以提取每个元素,并将其与新对象中的源迭代元素一起推送到目标数组中。


var source = [{

    a: 1,

    b: [{ c: 2 }, { d: 3 }],

    e: 4

}];


// define target as an array

var target = [];


// loop through source

source.forEach((srcElement) => {

    // loop through `b` array attribute

    srcElement.b.forEach((bElement) => {

        // push object into target with source element attributes

        // and current `b` element wrapped into an array

        target.push({

            ...srcElement,

            b: [bElement]

        });

    });

});


console.log(target);


注意:此解决方案假定在源对象的每次迭代中,该b属性都存在并且类型为Array。


查看完整回答
反对 回复 2021-10-29
  • 1 回答
  • 0 关注
  • 388 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信