Skip to content

Latest commit

 

History

History
24 lines (18 loc) · 757 Bytes

sumBy.md

File metadata and controls

24 lines (18 loc) · 757 Bytes
标题 标签
sumBy(根据回调函数求和) math,array(数学,数组)

在使用提供的函数将每个元素映射到一个值后,计算数组的总和。

  • 使用 Array.prototype.map() 将每个元素映射到 fn 返回的值。
  • 使用 Array.prototype.reduce() 将每个值添加到一个累加器,用值 0 初始化。
const sumBy = (arr, fn) =>
  arr
    .map(val => (typeof fn === 'function' ? fn(val) : val => val[fn]))
    .reduce((acc, val) => acc + val, 0);

调用方式:

sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], x => x.n); // 20
sumBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 20

应用场景