我试图计算一个函数,该函数将返回多个整数参数的平均值。谁可以帮忙?
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;更新:不是重复的问题或答案
过去的答案不支持长花车。
答案 0 :(得分:1)
你的迭代器也存在问题。你超越了阵列的末尾,那就是NaN。
这使它正确运行:
for (var i = 0; i < x.length; i++){
num = num + x[i];
}
在这里,我更新了你的小提琴:http://jsfiddle.net/hsvr8va5/10/
很高兴回答有关迭代器问题的具体问题。
答案 1 :(得分:1)
您可以在函数中使用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);
&#13;
<div id="choice"></div>
<div id="hidden">
</div>
&#13;
答案 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;
}
答案 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是零索引!