猿问

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

我想知道是否可以将一个对象拆分为多个对象。我有一个对象数组,其中包含另一个数组,我想知道是否可以为内部数组中的每个对象拆分这些对象。就像是:


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()} 但我不认为它适用于每个对象


陪伴而非守候
浏览 389回答 1
1回答

收到一只叮咚

根据您帖子中的描述,您走在正确的轨道上。您必须遍历源对象,并在每次迭代中遍历b数组以提取每个元素,并将其与新对象中的源迭代元素一起推送到目标数组中。var source = [{    a: 1,    b: [{ c: 2 }, { d: 3 }],    e: 4}];// define target as an arrayvar target = [];// loop through sourcesource.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。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答