Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Desired output:
- * cash: $80
- * ACB-CA: 2 share(s)
- * ACB-US: 1 share(s)
- */
- const _ = require('underscore');
- const data = [
- {
- "date": "2015-03-01",
- "type": "WDL",
- "symbol": null,
- "country": null,
- "quantity": "0.0",
- "net_amount": "-50.0"
- },
- {
- "date": "2015-02-26",
- "type": "BUY",
- "symbol": "ACB",
- "country": "CA",
- "quantity": "3.0",
- "net_amount": "-70.0"
- },
- {
- "date": "2015-02-27",
- "type": "SELL",
- "symbol": "ACB",
- "country": "CA",
- "quantity": "-1.0",
- "net_amount": "60.0"
- },
- {
- "date": "2015-01-28",
- "type": "DEP",
- "symbol": null,
- "country": null,
- "quantity": "0.0",
- "net_amount": "200.0"
- },
- {
- "date": "2015-02-26",
- "type": "BUY",
- "symbol": "ACB",
- "country": "US",
- "quantity": "4.0",
- "net_amount": "-80.0"
- },
- {
- "date": "2015-02-27",
- "type": "SELL",
- "symbol": "ACB",
- "country": "US",
- "quantity": "-3.0",
- "net_amount": "20.0"
- },
- ];
- const calculator = (data) => {
- let deposit = Number(data.filter(obj => obj.type === "DEP")[0].net_amount)
- let withdrawal = Number(data.filter(obj => obj.type === "WDL")[0].net_amount);
- let buys = data.filter(obj => obj.type === "BUY").reduce((acc, val) => parseFloat(acc.net_amount) + parseFloat(val.net_amount))
- let sells = data.filter(obj => obj.type === "SELL").reduce((acc, val) => parseFloat(acc.net_amount) + parseFloat(val.net_amount))
- let us_shares = data.filter(obj => obj.country === "US").reduce((acc, val) => parseFloat(acc.quantity) + parseFloat(val.quantity))
- let ca_shares = data.filter(obj => obj.country === "CA").reduce((acc, val) => parseFloat(acc.quantity) + parseFloat(val.quantity))
- let total = parseFloat(buys + sells + deposit + withdrawal);
- console.log(`cash: $${total} ACB-US: ${us_shares} share(s) ACB-CA: ${ca_shares} share(s)`)
- }
- calculator(data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement