У меня есть вложенный объект, и я хочу сплющить / отобразить его в однослойный табличный объект.
[{
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});
Вопрос в том, есть ли функциональный однострочный или даже другой, лучший подход. На самом деле, мой объект состоит из четырех слоев, и вложенные циклы довольно быстро запутываются.