Estoy trabajando en un proyecto personal y quiero mostrar el gráfico para el que necesito preparar los puntos de datos. la respuesta que tengo es
{ "size":[ { "timestamp":"1641329889000", "size":12345, "fees":123456, "cost":168 }, { "timestamp":"1641387032", "size":456789, "fees":4567891, "cost":249 }, { "timestamp":"1641435786", "size":98765, "fees":987654, "cost":987 }, ] }Quiero que la salida sea así
{ "size":{ "timestamp": ["1641329889000","1641387032","1641435786"], "size": [12345,456789,98765], "fees": [123456,4567891,987654], "cost": [168,249,987] } }Puede alguien ayudarme con esto
Usando .reduce() , puede usar una función genérica sin ningún nombre de punto de datos codificado.
const data={size:[{timestamp:"1641329889000",size:12345,fees:123456,cost:168},{timestamp:"1641387032",size:456789,fees:4567891,cost:249},{timestamp:"1641435786",size:98765,fees:987654,cost:987}]}; const result = data.size.reduce((acc, item) => { const keys = Object.keys(item); return keys.reduce((keyAcc, key) => ({ ...keyAcc, [key]: acc[key] ? [...acc[key], item[key]] : [item[key]] }), {}); }, []) console.log({ size: result});let obj = { "size":[ { "timestamp":"1641329889000", "size":12345, "fees":123456, "cost":168 }, { "timestamp":"1641387032", "size":456789, "fees":4567891, "cost":249 }, { "timestamp":"1641435786", "size":98765, "fees":987654, "cost":987 }, ] } let timestamps = []; let sizes = []; let fees = []; let costs = []; obj.size.foreach( ( data ) => { timestamps.push( data.timestamp ); sizes.push( data.size); fees.push( data.fees ); costs.push( data.cost ); } let size = { timestamp: timestamps, size : sizes, fees : fees, cost : costs } let outputObj = { size : size }; console.log( outputObj );Seguro que es sencillo. :D
{ "size":{ "timestamp": size.map(item => item.timestamp), "size": size.map(item => item.size), "fees": size.map(item => item.fees), "cost": size.map(item => item.cost), } }