javascript 具有参数(...休息)

iyzzxitl  于 2023-04-28  发布在  Java
关注(0)|答案(6)|浏览(107)

我试图写一个函数来计算数组中元素的平均值,使用参数(...休息)
以下是我尝试过的:

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,我不知道为什么。

zbsbpyhn

zbsbpyhn1#

因为你试图将0total)除以0nums.length,其中nums[]),在JavaScript中是NaN
如果列表为空,则可以在函数顶部进行检查,返回默认值(比如0):

function average(...nums) {
    if (!nums.length) return 0;
    let total = 0;
    // rest
}
oogrdqng

oogrdqng2#

当你没有传入任何东西时,你会返回0/0(也就是NaN),因为nums变成了一个空数组。其长度变为0。
返回nums.length ? total/nums.length : 0;

fnx2tebb

fnx2tebb3#

function average(...nums)
{
    let total = 0;  
    for(const num of nums)
    {
        total +=num;
        n= nums.length;
    }
    return total/n;
}

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());
irlmq6kh

irlmq6kh4#

检查它是否存在一个数组的参数,如果不存在,返回0或一些值,说明平均值无法计算。

function average(...nums) {
  if (!nums.length) {
    return 'Cannot find average'
  }
  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());
esbemjvw

esbemjvw5#

你所提供的答案将返回NAN。因此,为了避免这种情况,获取数组/数据集的长度,然后仅当长度大于0时除以总数。

function average(...value) {
    let total =0;
    for(const argument of value) {
    total += argument;
  }
  return  value.length>0?total/value.length : total;
}

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());
mm9b1k5b

mm9b1k5b6#

function average(...inputs) {
    let avg = 0;
    let sum = 0;
    for(const input of inputs){
        sum += input;
    }
    avg = sum / inputs.length;
    return avg;
}

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());

相关问题