繁体   English   中英

javascript:如何创建一个 function 接收任意数量的 arguments 并根据数量取平均值。 arguments 的?

[英]javascript: how to create a function that receives any number of arguments and take average depending on the num. of arguments?

我想创建一个 function 接收任意数量的 arguments 并根据数量取平均值。 arguments。 所以我尝试了如下代码;

 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 但我不明白为什么? 请帮忙。 谢谢。

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

 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

尝试:

 function takeAvg(...nums) { return nums.reduce((total, curVal) => { return (total + curVal) }) / nums.length;; } console.log(takeAvg(10, 20)) console.log(takeAvg(10, 20, 30))

你问为什么

在前一种情况下,您可以:

 function takeAvg(...nums) { return nums.reduce((total, curVal) => { return (total + curVal) / nums.length; }); } x = ((10+20)/3 + 30)/3 // take average of 10,20,30 console.log('maths expression: ',x) console.log('your function: ',takeAvg(10,20,30)) x = ((((10+20)/4 + 30)/4) + 40)/4 //take average of 10,20,30,40 console.log('maths expression: ',x) console.log('your function: ',takeAvg(10,20,30,40))

现在:

 x = (10 +20+ 30)/3 console.log(x)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM