我有一个嵌套对象,想要将其展开/映射成为一个单层的、类似于表格的对象。
当然,我可以使用两个for循环迭代对象并将结果放入单独的数组中,但我想知道是否有更简单的解决方案。我已经尝试使用
由于一些人要求提供一些可行代码,这应该可以(未经测试):
问题在于,是否存在一种功能性的一行代码或者其他更好的方法。实际上,我的对象由四个层次构成,嵌套的for循环很快变得混乱不堪。
[{
a: 1,
b: 2,
c: [{
x: 10,
y: 20
}, {
x: 30,
y: 40
}]
}, {
a: 3,
b: 4,
c: [{
x: 50,
y: 60
}, {
x: 70,
y: 80
}]
}]
我希望得到类似于这样的东西:
[{
a: 1,
b: 2,
x: 10,
y: 20
}, {
a: 1,
b: 2,
x: 30,
y: 40
}, {
a: 3,
b: 4,
x: 50,
y: 60
}, {
a: 3,
b: 4,
x: 70,
y: 80
}]
当然,我可以使用两个for循环迭代对象并将结果放入单独的数组中,但我想知道是否有更简单的解决方案。我已经尝试使用
flatMap
进行操作,如果我只需要嵌套对象的c
部分,则它可以工作,但我不知道如何将a
和b
映射到此对象。由于一些人要求提供一些可行代码,这应该可以(未经测试):
let result = [];
for (const outer of myObj)
for (const inner of outer.c)
result.push({a: outer.a, b: outer.b, x: inner.x, y: inner.y});
问题在于,是否存在一种功能性的一行代码或者其他更好的方法。实际上,我的对象由四个层次构成,嵌套的for循环很快变得混乱不堪。
{x,y}
有另一个子数组,那么这个乘法会更多吗? - Keithfor
循环方法,它会变得非常丑陋。 - André Reichelt