计算任意数量参数的平均值
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>
你的代码很好,除了你在 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 是零索引!
我正在尝试计算一个函数,该函数将 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>
你的代码很好,除了你在 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 是零索引!