TGViewer
JavaScript JavaScript @javascript · 31.1K subscribers
Post #3271 2K
CHALLENGE


const transactions = [
{ type: "credit", amount: 200, category: "salary" },
{ type: "debit", amount: 50, category: "food" },
{ type: "debit", amount: 30, category: "food" },
{ type: "credit", amount: 100, category: "bonus" },
{ type: "debit", amount: 70, category: "transport" },
];

const summary = transactions.reduce((acc, { type, amount, category }) => {
acc.balance += type === "credit" ? amount : -amount;
acc.byCategory[category] = (acc.byCategory[category] ?? 0) + amount;
acc.count[type] = (acc.count[type] ?? 0) + 1;
return acc;
}, { balance: 0, byCategory: {}, count: {} });

console.log(summary.balance);
console.log(JSON.stringify(summary.byCategory));
console.log(JSON.stringify(summary.count));
  • ❤ 4
  • 👍 1
  • 🔥 1
More from @javascript
  1. Sep 20, 2026Post #3507
  2. Sep 20, 2026CHALLENGE 'use strict'; function getValue() { return this.value; } const obj = { value: 42…
  3. Sep 19, 2026Post #3505
  4. Sep 19, 2026CHALLENGE const a = 5 & 3; const b = 5 | 2; const c = ~5; const d = 1 << 31; const e = -1…
  5. Sep 18, 2026Post #3503
  6. Sep 18, 2026CHALLENGE let i = 0; const key = () => `k${i++}`; const obj = { [key()]: i, [key()]: i, [k…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →