今天这道题是来计算输入数组中的值的平均数,新的一天,新的小知识点,在下还用了新get的编辑器,焕然一新~
首先,我们来创建一个函数;
function calculateAverage(arr){
if(arr.length===0){
return '不输入值是要我算泡泡茶壶吗?'
}
养成一个好习惯,在编写函数主体之前,先排除特殊情况,不然出现沟沟卡卡的数值,就是代码的错漏之处,也就是身为程序猿的我们不严谨之处。
const sum=arr.reduce((accumulator,currentValue)=>accumulator+currentValue,0);
return sum/arr.length;
}
}
这就是函数的主体,上下拼接食用即可。
今天的函数体很简单,主要是用到一个方法:
reduce()方法
reducer 函数是一个接收多个参数的回调函数,通常与数组的 reduce() 方法一起使用(双向奔赴)。
reduce() 方法对数组中的每个元素执行一个由程序猿提供的 reducer 函数,将其结果汇总为单个返回值。
其中包含两个参数:accumulator以及currentValue
accumulate我们简称为小a,它的中文名字叫累加器,是上一次回调返回的值。
currentValue我们简称小c,它的中文名字叫当前值,也就是函数现在正在处理的数值。
结合我们代码来看:
(accumulator,currentValue)=>accumulator+currentValue
这一句的意思就是,调用小a和小c,不断地对数组的数值进行加法操作。
然后我们可以看到,这句函数尾巴上坠着一个数字:0
这个0是reduce方法中的第二个参数,它的作用是指定了 reduce() 操作的初始值。
这个初始值非常重要,因为它定义了 reduce() 操作开始时 小a的值。如果没有提供初始值,那么小a的初始值将是数组的第一个元素,并且 小c(当前值) 将是数组的第二个元素。
如果你不希望小a是从第一个数开始的话,那么更改这个参数,就可以更改小a的初始值了!
这段函数最后输出的是所有数的累加和,即sum
那么最后配合返回代码,将变量 sum/arr.length 的值输出
return sum/arr.length;
console.log(calculateAverage([2,1,7,4,2,8,6,0,0,0]));
console.log(calculateAverage([]));
我们就可以得到输出结果了: