我试图写一个函数来计算数组中元素的平均值,使用参数(...休息)
以下是我尝试过的:
function average(...nums) {
let total = 0;
for (const num of nums) {
total += num;
}
return total / nums.length;
}
console.log(average(2, 6));
console.log(average(2, 3, 3, 5, 7, 10));
console.log(average(7, 1432, 12, 13, 100));
console.log(average());
但是最后一个测试返回NaN
,我不知道为什么。
6条答案
按热度按时间zbsbpyhn1#
因为你试图将
0
(total
)除以0
(nums.length
,其中nums
是[]
),在JavaScript中是NaN
。如果列表为空,则可以在函数顶部进行检查,返回默认值(比如
0
):oogrdqng2#
当你没有传入任何东西时,你会返回0/0(也就是NaN),因为nums变成了一个空数组。其长度变为0。
返回
nums.length ? total/nums.length : 0;
fnx2tebb3#
irlmq6kh4#
检查它是否存在一个数组的参数,如果不存在,返回0或一些值,说明平均值无法计算。
esbemjvw5#
你所提供的答案将返回NAN。因此,为了避免这种情况,获取数组/数据集的长度,然后仅当长度大于0时除以总数。
mm9b1k5b6#