计算任意数量参数的平均值

Calculate the average for an arbitrary number of arguments

我正在尝试计算一个函数,该函数将 return 多个整数参数的平均值。谁能帮忙?

var Calculator = {
  average: function(x) {
    var num = 0;
    for (var i = 1; i <= x.length; i++) 
    num = num + x[i];
    var divide = num/x.length;
    return divide;
 }
};

当我 运行 这段代码时,我得到 NaN。

这是fiddle:http://jsfiddle.net/marcusdei/hsvr8va5/6/

--------------------> 更新:不是重复的问题或答案

过去的答案不支持长浮点数。

X 应该是一个数组。如果你想支持可变数量的参数,你需要遍历"arguments"。这是一个神奇的数组,包含调用该函数的所有参数。

此外,数组索引从 0 开始,到长度 1 结束。您的版本在开始时跳过了第一个数字,并在最后超出了界限。这导致最后添加的是 num = num + undefined = NaN

function() {
    var num = 0,
        x = arguments;
    for (var i = 0; i < x.length; i++) 
    num = num + x[i];
    var divide = num/x.length;
    return divide;
 }

Fiddle: http://jsfiddle.net/hsvr8va5/12/

您的迭代器也有问题。您已经超过运行 数组的末尾,即 NaN。

这使得 运行 正确:

for (var i = 0; i < x.length; i++){
        num = num + x[i];      
      }

在这里,我更新了你的fiddle:http://jsfiddle.net/hsvr8va5/10/

很高兴回答您关于迭代器问题的具体问题。

您的循环使用了不正确的开始值和结束条件。此外,必须使用数组作为参数调用该函数。代码应如下所示:

var Calculator = {
  average: function(x) {
    var num = 0;
    for (var i = 0; i < x.length; i++) 
        num = num + x[i];
    var divide = num/x.length;
    return divide;
 }
};

document.getElementById('choice').innerHTML = Calculator.average([3,4,5]);

您可以在函数中使用 JavaScript 的 arguments 来处理任意数量的参数。

 
 var Calculator = {
  average: function() {
    var num = 0,length=arguments.length;
    if(!length) return 0;
    for (var i = 0; i < length; i++) 
            num = num + arguments[i];
    var divide = num/length;
    return divide;
 }
};

document.getElementById('choice').innerHTML = Calculator.average(3,4,5);
    <div id="choice"></div>

<div id="hidden">

</div>

已更新 fiddle:http://jsfiddle.net/vikashvverma/hsvr8va5/11/

你的代码很好,除了你在 for 循环中迭代的部分,这是你的代码

var Calculator = {
  average: function(x) {
    var num = 0;
    for (var i = 0; i < x.length; i++) 
    num = num + x[i];
    var divide = num/x.length;
    return divide;
 }
};

你要注意Loop Invariants。循环受香蕉问题(我知道如何拼写,但我不知道何时停止)。 JavaScript 是零索引!