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