javascript 尝试使用函数(JS)返回3个数字的平均值

zbwhf8kr  于 2023-05-05  发布在  Java
关注(0)|答案(3)|浏览(128)

我只是在玩JS,并试图学习它。
我在试着求三个数字的平均值;为此,我定义了一个有三个参数的函数,并声明了参数值。
但是函数并没有返回平均值,但是当我运行console.log时,它显示了平均值。

function make_avg(num1, num2, num3) {
  var total = num1 + num2 + num3;
  var average = total / 3;
  return average;
}
make_avg(15, 20, 25);

我已经尝试了这个代码,但无法返回平均值。你能告诉我代码的问题和可能的解决方案吗?

9fkzdhlc

9fkzdhlc1#

当你返回它的时候,如果你想使用那个值,你应该把返回的值赋给一个变量。

const num = make_avg(15, 20, 25)
// num will be equal to 20

这实际上取决于你正在返回什么以及你如何使用它。例如,如果你返回一个布尔值(true/false),你可以把它放在一个条件语句中,而不把它赋值给一个变量。例如:

function isString(arg){
  return typeof arg === 'string'
}

// you can then say:

if(isString('hello world')){
  console.log("yes, it is a string") // because the function will return true, this block will execute
}

特拉斯

你的函数有点局限于只找到三个数字的平均值。你可以通过传递一个数字数组来扩展它,然后改变你的函数将数字相加(在数组上使用.reduce),然后将总和除以数组的长度(即数字的个数)。它可以找到任何数量的平均值。注意:我将给予代码来做这件事。您可以在检查代码之前自己尝试一下,或者如果您卡住了也可以检查一下。

修改平均值查找器功能

function find_avg(arrOfNums) {
    var total = arrOfNums.reduce((a, b) => {return a + b}, 0)
    var average = total / arrOfNums.length;
    return average;
  }

// let's test it out

  const avg = find_avg([1, 2, 3, 4, 5, 6])
  // avg will be 3.5

请记住,函数必须始终接受数组作为其参数。希望这对你有帮助:)

ve7v8dk2

ve7v8dk22#

你的解决方案有效。要使其更短,并使用您想要的数量或数量,您可以执行以下操作:

const makeAvg = (...nums) => nums.reduce((a, c) => a + c) / nums.length;

console.log(makeAvg(15, 20, 25));

阅读有关spread syntax(the ...在nums之前使用):
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
关于数组方法reduce
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
关于箭头函数这里
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

hyrbngr7

hyrbngr73#

您的解决方案看起来不错!您可以扩展您的解决方案,通过利用数组来查找任何计数的平均值

function average(numbers) {
  let sum = 0;

  for (const num of numbers) {
    sum += num
  }

  return sum / numbers.length;
}
console.log(average([1, 2, 3, 4])) // should output 2.5

此外,如果你想避免手动创建数组,你也可以使用spread syntax

function average(...numbers) {
  let sum = 0;

  for (const num of numbers) {
    sum += num
  }

  return sum / numbers.length;
}
console.log(average(1, 2, 3, 4)) // should output 2.5

相关问题