"Financial Transactions",
dataset: [{
name: "bills",
values: [{
name: "pending",
value: 10,
},
{
name: "failed",
value: 10,
},
],
},
{
name: "advances",
values: [{
name: "pending",
value: 100,
},
{
name: "failed",
value: 60,
},
],
},
],
}
]
How can I convert it to this structure?
I spent a lot of time but still couldn't figure out how to do like this
{
title: "FinancialTransactions",
datasets: [
{
label: "Pending",
data: [10,100],
},
{
label: "Failed",
data: [10,60],
},
],
labelsXaxis: ["Bills", "Advances",],
}
Need some help, please...
I would do like name : $name Value : $value To Array of $name:$ value And then groupby keys using reduce
Thanks, I'll try.
jeez that's a lot of code
yes man I know, Probably some can optimize my solution https://hastebin.com/areyecinuv.js or Provide a solution of how would you do this easier in other lang may be ?
😍Thank you so much bro. I'm new to Javascript. Just a month Old Initially, I tried to do this using for loops But after your suggestion, I started reading about new es6 features reduce, map ... But now you even provided me the solution. Thanks a lot.
sure man it can be further refactored but I am not a super pro dev like many here there are also some unused variables you can remove in that code
const result = transactions.reduce((acc, { title, dataset }) => { const labelsXaxis = []; const datasets = dataset .map(({ name, values }) => (labelsXaxis.push(name), values)) .flat() .reduce( (obj, { name, value }) => ({ ...obj, [name]: obj[name] ? { ...obj[name], data: [...obj[name].data, value] } : { label: name, data: [value] } }), {} ); return [...acc, { title, datasets: Object.values(datasets), labelsXaxis }]; }, []);
You summoned the daemon
Looks like a demon wrote this too x)
Обсуждают сегодня