Skip to content

Latest commit

 

History

History
22 lines (18 loc) · 685 Bytes

averageBy.md

File metadata and controls

22 lines (18 loc) · 685 Bytes
方法名 标签
averageBy
数学,数组,中等

使用提供的函数将每个元素映射(mapping)到一个值后,计算数组的平均数。

  • 使用 Array.prototype.map() 将每一个元素映射(map)为 fn 返回的值。
  • 使用 Array.prototype.reduce() 将每个值添加到累加器,初始值为 0
  • 根据数组的长度划分数组。
const averageBy = (arr, fn) =>
  arr
    .map(typeof fn === 'function' ? fn : val => val[fn])
    .reduce((acc, val) => acc + val, 0) / arr.length;
averageBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], o => o.n); // 5
averageBy([{ n: 4 }, { n: 2 }, { n: 8 }, { n: 6 }], 'n'); // 5