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

时间:2015-06-20 14:44:39

标签: javascript numbers average

我试图计算一个函数,该函数将返回多个整数参数的平均值。谁可以帮忙?

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。

这是小提琴:http://jsfiddle.net/marcusdei/hsvr8va5/6/

--------------------&GT;更新:不是重复的问题或答案

过去的答案不支持长花车。

5 个答案:

答案 0 :(得分:1)

你的迭代器也存在问题。你超越了阵列的末尾,那就是NaN。

这使它正确运行:

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

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

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

答案 1 :(得分:1)

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

&#13;
&#13;
 
 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);
&#13;
    <div id="choice"></div>

<div id="hidden">

</div>
&#13;
&#13;
&#13;

更新了小提琴:http://jsfiddle.net/vikashvverma/hsvr8va5/11/

答案 2 :(得分:0)

X应该是一个数组。如果要支持可变数量的参数,则需要迭代“参数”。它是一个神奇的数组,包含函数调用的所有参数。

此外,数组索引从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;
 }

小提琴:http://jsfiddle.net/hsvr8va5/12/

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

您的代码很好,除了您在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是零索引!