reduce task
by Artem
HTML
{
"usd": {
"buy": 200,
"sell": 300
},
"eur": {
"buy": 100,
"sell": 0
}
}
Babel + JSX
'use strict';
const response = [
['usd', 'buy', 200],
['usd', 'sell', 100],
['usd', 'sell', 200],
['eur', 'buy', 100]
];
const actions = ['buy', 'sell'];
function convert(response) {
const result = response.reduce((prev, [currency, action, amount]) => {
prev[currency] ?
prev[currency][action] += amount :
prev[currency] = {
[action]: amount,
[actions.filter(a => a !== action)]: 0
};
return prev;
}, {});
console.log(JSON.stringify(result));
}
convert(response);