meanBy
"Let go of the thoughts that don't make you strong." —Unknown
本文为 《lodash 源码阅读》 系列文章,后续内容会在 github 中发布,欢迎 star,gitbook 同步更新。
依赖
import baseSum from './.internal/baseSum.js';
源码
/** Used as references for various `Number` constants. */
const NAN = 0 / 0;
/**
* 这个方法类似 _.mean
* 但它接受 iteratee 来调用 array 中的每一个元素,来生成其值排序的标准。
* iteratee 会调用1个参数: (value) 。
*
* @since 4.7.0
* @category Math
* @param {Array} array 要迭代的数组。
* @param {Function} iteratee 调用每个元素的迭代函数。
* @returns {number} 返回平均值。
* @example
*
* const objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]
*
* meanBy(objects, ({ n }) => n)
* // => 5
*/
function meanBy(array, iteratee) {
const length = array == null ? 0 : array.length;
return length ? baseSum(array, iteratee) / length : NAN;
}
原理
判断传入的数组是否为空或者假值,是则返回 NaN
,否则通过 baseSum
计算 array
中值的总和,再除以 array
长度取得平均值进行返回。
相关链接
Last updated
Was this helpful?