Преобразовать объект в массив объектов

Надо написать функцию, которая смогла бы "расплющить объект". Аргументы: (data, name, fields). Входные данные:

data = {
  foo: {qty: 1, price: 23},
  bar: {qty: 7, price: 182}
 };
name="zoo";
fields=["Кол-во","Цена"];

Возвращенный массив:

[
   {zoo: "foo", Кол-во: 1,  Цена:23},
   {zoo: "bar", Кол-во: 7,  Цена:182}
]

Заметьте, zoo равен названиям ключей из data


Ответы (1 шт):

Автор решения: DiD

const input = {
  foo: {qty: 1, price: 23},
  bar: {qty: 7, price: 182}
 };
const name="zoo";
const fields=["Кол-во","Цена"];

const output = Object.entries(input).map(
  ([val,props])=>({ [name]:val, ...
    Object.fromEntries(Object.values(props)
                       .map((prop,idx)=>[fields[idx],prop]))}));
                       
console.log(output);

→ Ссылка