Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. /* Desired output:
  2. * cash: $80
  3. * ACB-CA: 2 share(s)
  4. * ACB-US: 1 share(s)
  5. */
  6.  
  7. const _ = require('underscore');
  8.  
  9. const data = [
  10. {
  11. "date": "2015-03-01",
  12. "type": "WDL",
  13. "symbol": null,
  14. "country": null,
  15. "quantity": "0.0",
  16. "net_amount": "-50.0"
  17. },
  18. {
  19. "date": "2015-02-26",
  20. "type": "BUY",
  21. "symbol": "ACB",
  22. "country": "CA",
  23. "quantity": "3.0",
  24. "net_amount": "-70.0"
  25. },
  26. {
  27. "date": "2015-02-27",
  28. "type": "SELL",
  29. "symbol": "ACB",
  30. "country": "CA",
  31. "quantity": "-1.0",
  32. "net_amount": "60.0"
  33. },
  34. {
  35. "date": "2015-01-28",
  36. "type": "DEP",
  37. "symbol": null,
  38. "country": null,
  39. "quantity": "0.0",
  40. "net_amount": "200.0"
  41. },
  42. {
  43. "date": "2015-02-26",
  44. "type": "BUY",
  45. "symbol": "ACB",
  46. "country": "US",
  47. "quantity": "4.0",
  48. "net_amount": "-80.0"
  49. },
  50. {
  51. "date": "2015-02-27",
  52. "type": "SELL",
  53. "symbol": "ACB",
  54. "country": "US",
  55. "quantity": "-3.0",
  56. "net_amount": "20.0"
  57. },
  58. ];
  59.  
  60. const calculator = (data) => {
  61. let deposit = Number(data.filter(obj => obj.type === "DEP")[0].net_amount)
  62. let withdrawal = Number(data.filter(obj => obj.type === "WDL")[0].net_amount);
  63.  
  64. let buys = data.filter(obj => obj.type === "BUY").reduce((acc, val) => parseFloat(acc.net_amount) + parseFloat(val.net_amount))
  65. let sells = data.filter(obj => obj.type === "SELL").reduce((acc, val) => parseFloat(acc.net_amount) + parseFloat(val.net_amount))
  66.  
  67. let us_shares = data.filter(obj => obj.country === "US").reduce((acc, val) => parseFloat(acc.quantity) + parseFloat(val.quantity))
  68. let ca_shares = data.filter(obj => obj.country === "CA").reduce((acc, val) => parseFloat(acc.quantity) + parseFloat(val.quantity))
  69.  
  70.  
  71. let total = parseFloat(buys + sells + deposit + withdrawal);
  72.  
  73. console.log(`cash: $${total} ACB-US: ${us_shares} share(s) ACB-CA: ${ca_shares} share(s)`)
  74. }
  75.  
  76. calculator(data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement