Skip to main content

sumBy

TS JS Deno

Returns the sum of an array, after mapping each element to a value using the provided function.

Use Array.prototype.map() to map each element to the value returned by fn, Array.prototype.reduce() to add each value to an accumulator, initialized with a value of 0.

typescript
const sumBy = <T = AnyObject>(arr: T[], fn: string | ((a: T) => number)) => {
return arr
.map(typeof fn === "function" ? fn : (val: AnyObject) => val[fn])
.reduce((acc, val) => acc + val, 0);
};
typescript
sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], (o) => o.n); // 20
sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], "n"); // 20