在javascript中使用for循环计算平均值

时间:2012-01-27 10:39:35

标签: javascript function average

function averageCalculator (numvalues) {

    for(i=0, i <= numvalues, i++>) {
    var score = prompt("input the score")
    result1 += score;

    }

    alert(result1 / 3);
}

此功能稍后会被带有onclick="averageCalculator (2)

的按钮触发
<input type="button" value="Click for the average" onclick="averageCalculator (2)">

任何想法为何不起作用?它应该提示您输入2个值,然后提醒您平均值。不确定什么是错的。

4 个答案:

答案 0 :(得分:4)

您的代码有多个问题。 for循环格式不正确,您需要使用分号终止语句。您还需要声明变量。你的循环将运行numvalues + 1次,这就是我在你的循环中删除=的原因。此外,如果你想计算你想要除以numvalues的平均值。

function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {    
    var score = prompt("input the score");   
    result1 += score;    
}
alert(result1 / numvalues);
}

除了无效的语法之外,你将在这里遇到一个常见的“问题”。输入被视为字符串,而不是添加它们将被连接。提供2和2作为分数将得到11. 2与2 = 22/2 = 11连接。在将它们加在一起之前,需要明确地将值转换为数字:

function averageCalculator (numvalues) {
var result1 = 0;
for(i=0; i < numvalues; i++) {    
    var score = prompt("input the score");   
    result1 += Number(score);    
}
alert(result1 / numvalues);
}

以上代码将正确返回2

答案 1 :(得分:2)

for循环的语法错误:

for(i=0, i <= numvalues, i++>) {

应该是

for(i=0; i <= numvalues; i++) {

提示:此外,最好使用

for(var i=0; i <= numvalues; i++) {

从那以后i将是一个局部变量而不是全局变量。

答案 2 :(得分:1)

试试这个

for(var i = 0; i&lt; = numvalues; i ++){}

答案 3 :(得分:1)

另一种解决方案(使用函数式编程库,如Underscore.js):

function averageCalculator(numValues) {
    var numbers = _.map(_.range(numValues), function(element) {
        return +prompt('input the score');
    });

    var result = _.reduce(numbers, function(memo, number) {
        return memo + number;
    }, memo);

    alert(result / 3);
}

虽然有点复杂(而且效率较低),但你会完全摆脱循环。

修改

+prompt('input the score')Number(prompt('input the score'))的确有效。