【发布时间】:2020-06-23 12:09:59
【问题描述】:
我有一个嵌套对象,我想将它展平/映射成一个单层、类似表格的对象。
[{
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 循环很快就会变得混乱。
【问题讨论】:
-
如果您实际上没有任何问题,这可能更适合codereview.stackexchange.com
-
你在这里并不讨人喜欢,因为如果是的话,你会有重复的 x 和 y。也是这个结构总是这样,如果
{x,y}有另一个子数组,这个会更多吗? -
@Brewal 绝对不是 codereview 的问题。
-
@Brewal 但是他们在 codereview 修复现有的和工作的代码,当根本没有代码比这里更难回答时。
-
@Teemu 我认为实际上已经有一个可行的解决方案。
标签: javascript flatmap