javascript:如何创建一个函数来接收任意数量的参数并根据数量取平均值。的论点?
javascript: how to create a function that receives any number of arguments and take average depending on the num. of 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)
我想创建一个函数来接收任意数量的参数并根据数量取平均值。的论据。所以我尝试了如下代码;
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)