[
{
name: "pink", messages: [
{ id: "1", message: { color: "red" } },
{ id: "2", message: { color: "red2" } }
]
},
{
name: "black", messages: [
{ id: "10", message: { color: "yellow1" } },
{ id: "20", message: { color: "yellow2" } }
]
}
]
Я хочу рекурсивно пройти и свести его к следующему:
[
{"name": "pink", "id": "1", "message": {"color": "red"}},
{"name": "pink", "id": "2", "message": {"color": "red2"}},
{"name": "black", "id": "10", "message": {"color": "yellow1"}},
{"name": "black", "id": "20", "message": {"color": "yellow2"}}
]
Я пытался следовать ветке из: Сократить объект JSON, содержащий объекты JSON, в массив формы [Путь, Значение], но я не могу изменить его, чтобы получить правильный результат.
Какой же результат вы получите? Приведите минимально воспроизводимый пример.
Какой код вы пробовали?
Массив сообщений @Unmitigated не будет содержать больше массивов, но будет больше элементов
Вы можете использовать комбинацию flatMap
и синтаксиса распространения:
const appleObjects = [{name: "pink", messages: [{id: "1", message: {color: "red"}},{id: "2", message: {color: "red2"}}]}, {name: "black",messages: [{id: "10", message: {color: "yellow1"}},{id: "20", message: {color: "yellow2"}}]}];
const result = appleObjects.flatMap(({messages, ...obj}) =>
messages.map(msg => ({...obj, ...msg}))
);
console.info(result);
Фиксировано ли количество слоев вложения? Будет ли массив сообщений содержать больше массивов?