【发布时间】:2020-05-14 15:55:23
【问题描述】:
对数组使用rest参数和for...of循环...
function average(...nums) {
let total = 0;
for(const num of nums) {
total += num;
}
let avr = total / arguments.length;
return avr;
}
console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
// returns NaN - required to return 0.
console.log(average());
问题:对于无参数 - console.log(average()); - 返回 NaN,其中正确答案必须为 0。
这里有什么好的速记解决方案吗?
【问题讨论】:
-
在函数
if (!arguments.length) return 0的第一行添加一个简单的检查。 -
或
if (nums.length === 0) return 0;并在计算平均值时使用nums.length而不是arguments.length。还不如使用 rest 参数来获得它的价值,对吧? -
也许还要确保
num是一个实际数字,然后再将其添加到总数if(!isNaN(num) { total += num; } -
@norbitrial 谢谢。出色的解决方案,我的代码正在运行。
标签: javascript arrays for-loop ecmascript-6 es6-modules