JavaScript: convierte una matriz de objetos en una matriz de objetos de una matriz de objetos
Convertir: Entrada
[{fecha: 2021, nombre: 'Nueva York', precio: 452}, {fecha: 2020, nombre: 'Nueva York', precio: 452}, {fecha: 2021, nombre: 'Oregón', precio: 452} , .... ]
La salida requerida es:
{ name: "New York", values: [ {date: "2000", price: "50"}, {date: "2001", price: "10"}, {date: "2002", price: "5"}, {date: "2003", price: "71"}, {date: "2004", price: "20"}, {date: "2005", price: "9"}, {date: "2006", price: "220"}, {date: "2007", price: "235"}, {date: "2008", price: "61"}, {date: "2009", price: "10"} ] }, { name: "Oregon", values: [ {date: "2000", price: "20"}, {date: "2001", price: "10"}, {date: "2002", price: "5"}, {date: "2003", price: "71"}, {date: "2004", price: "20"}, {date: "2005", price: "9"}, {date: "2006", price: "220"}, {date: "2007", price: "235"}, {date: "2008", price: "61"}, {date: "2009", price: "10"} ] } ];
puedes hacer algo como esto
const data = [{date: 2021,name: 'New York',price: 452}, {date: 2020,name: 'New York',price: 452}, {date: 2021,name: 'Oregon',price: 452}] const result = Object.values(data.reduce((res, {name,...rest}) => { return { ...res, [name]: { name, values: [...(res[name] || {values: []}).values, rest] } } }, [])) console.log(result)