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

标签 javascript list object split

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

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

最佳答案

根据您帖子中的描述,您的方向是正确的。您必须循环遍历源对象,并在每次迭代内循环遍历 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

关于javascript - 如何将一个包含数组的对象拆分为多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58106376/

相关文章:

java - 最大限度。 Java中List的长度

javascript - 根据 2 个键的属性减少数组

javascript - 在 1 级深度上翻转键值对

python - 如何从 Python 中的列表创建嵌套字典?

PHP 对象字面量

javascript - React Native 文件访问 api : blob. 数据在 android 上是 'undefined'

javascript 未在 imgsrc 中显示图像

javascript - Kendo UI折线图中的点拖动

javascript - Document.querySelector() 不适用于 bootstrap css

python - While循环-IndexError : list assignment index out of range