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);