首页 > 解决方案 > javascript:如何创建一个接收任意数量参数并根据数量取平均值的函数。论据?

问题描述

我想创建一个函数,它接收任意数量的参数并根据 num 取平均值。的论点。所以我尝试了如下代码;

function takeAvg(...nums) {
	return nums.reduce((total, curVal) => {
		return (total + curVal) / nums.length;
	});
} 
console.log(takeAvg(10, 20)) // returns 15 - no problem
console.log(takeAvg(10, 20, 30)) // returns 13.333333333333334 weirdly.

我认为问题出在 nums.legth 但我不明白为什么?请帮忙。谢谢。

标签: javascriptmapreduceaverage

解决方案


您的错误是您将求和的每个部分结果除以长度,而不仅仅是最终结果。

function takeAvg(...nums) {
    return nums.reduce((total, curVal) => {
        return (total + curVal);
    }) / nums.length;
} 

console.log(takeAvg(10, 20)) // 15
console.log(takeAvg(10, 20, 30)) // 20


推荐阅读