使用 JavaScript 中的 Reduce 方法求平均值

Sha*_*han 18 javascript ecmascript-6

最近我尝试用 JavaScript 中的 Reduce 方法计算 平均值?这是可能的代码

var arr = [129, 139, 155, 176];

var result = arr.reduce(function (start, end, index, array){
  var total =start + end;
  var array_length = array.length;
  return total/array_length;
});
console.log(result);
Run Code Online (Sandbox Code Playgroud)

我的结果是 57.875 但它是错误的,我的问题在哪里以及如何解决?

Nin*_*olz 24

您可以添加所有值,这些值除以长度以获得平均值。

var array = [129, 139, 155, 176],
    average = array.reduce(function (avg, value, _, { length }) {
        return avg + value / length;
    }, 0);

console.log(average);
Run Code Online (Sandbox Code Playgroud)

或者取所有值的总和并除以数组的长度。结果是一样的。

var array = [129, 139, 155, 176],
    average = array.reduce(function (sum, value) {
        return sum + value;
    }, 0) / array.length;

console.log(average);
Run Code Online (Sandbox Code Playgroud)

  • `{ length }` 这对我来说是新的。 (2认同)
  • @null,这是一个 [解构赋值](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment) 通过获取一个对象并获取一个属性。 (2认同)
  • 第一个代码是为了避免由于将每个值除以数组长度而对近似值求和。加上第二个代码性能更好。 (2认同)