zl程序教程

您现在的位置是:首页 >  其它

当前栏目

_.mean(array)

Array _. Mean
2023-09-11 14:15:01 时间

179

_.mean(array)
_.mean计算一个数组的平均值

参数

array (Array): 需要迭代计算平均值的数组

返回值

(number): 返回数组的平均值

例子

_.mean([4, 2, 8, 6]);
// => 5

源代码

import baseMean from './meanBy.js'

/**
 * Computes the mean of the values in `array`.
 *
 * @since 4.0.0
 * @category Math
 * @param {Array} array The array to iterate over.
 * @returns {number} Returns the mean.
 * @example
 *
 * mean([4, 2, 8, 6])
 * // => 5
 */
//计算一个数组的平均值
function mean(array) {
  return baseMean(array, (value) => value)
}

export default mean
meanBy
import baseSum from './.internal/baseSum.js'

/** Used as references for various `Number` constants. */
const NAN = 0 / 0

/**
 * This method is like `mean` except that it accepts `iteratee` which is
 * invoked for each element in `array` to generate the value to be averaged.
 * The iteratee is invoked with one argument: (value).
 *
 * @since 4.7.0
 * @category Math
 * @param {Array} array The array to iterate over.
 * @param {Function} iteratee The iteratee invoked per element.
 * @returns {number} Returns the mean.
 * @example
 *
 * const objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }]
 *
 * meanBy(objects, ({ n }) => n)
 * // => 5
 */
//此方法与mean类似,接收一个iteratee为数组中没有给元素调用去生成需要被计算平均值的值
function meanBy(array, iteratee) {
  const length = array == null ? 0 : array.length//数组长度
  return length ? (baseSum(array, iteratee) / length) : NAN
  //如果数组有元素,调用baseSum计算数组所有元素的和然后除以数组长度计算出平均值,否则返回NaN
}

export default meanBy
baseSum
/**
 * The base implementation of `sum` and `sumBy`.
 *
 * @private
 * @param {Array} array The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {number} Returns the sum.
 */
//sum和sumBy方法的基础实现
function baseSum(array, iteratee) {
  let result

  for (const value of array) {//循环数组
    const current = iteratee(value)//用iteratee处理当前值
    if (current !== undefined) {//如果当前值不是undefined
      //将当前值加入result中
      result = result === undefined ? current : (result + current)
    }
  }
  return result
}

export default baseSum