2017-03-15 200 views
1

这可能是一个愚蠢的问题,但我对JavaScript很陌生,不能在我的生活中找出如何获得用户输入数组元素的平均值(平均值)。这里是我编写的代码,其中提示用户输入数组中的元素数量并循环回来并多次提示输入元素。任何帮助表示赞赏。谢谢。如何获取用户输入数组元素的平均值(平均值)?

<html> 
<head> 
<title>Title</title> 
<script type="text/javascript"> 
    var nums = new Array(); 
    var N = prompt("How many numbers would you like to enter? "); 
    N = parseInt(N); 
    var i = 0; 
    for(i = 0; i <= N - 1; i++) 
    { 
     nums[i] = prompt("Enter your numbers: "); 
     document.write("Number you chose: " + nums[i] + "<br />"); 
    } 
</script> 
</head> 
<body> 
</body> 
</html> 
+0

'变种总和= 0;'环路,'总和+ =号码(NUMS [I])'循环内(后与提示线)和'VAR平均=总和/ N之前;循环之后。 – nnnnnn

回答

1

你必须使用一个总和VAR s增加的输入值,并使用这个公式average = s/N计算在年底平均:

<script type="text/javascript"> 
 
    var nums = new Array(); 
 
    var N = prompt("How many numbers would you like to enter? "); 
 
    N = parseInt(N); 
 
    var i = 0, s = 0; 
 
    for(i = 0; i <= N - 1; i++) 
 
    { 
 
     nums[i] = parseInt(prompt("Enter your numbers: ")); 
 
     s += nums[i]; 
 
     document.write("Number you chose: " + nums[i] + "<br />"); 
 
    } 
 
    var ave = s/N; 
 
    document.write("Average: " + ave + "<br />"); 
 
</script>

此外,如果你不需要这些输入数字,你可以删除nums数组,并使用一个简单的变量来代替它:

<script type="text/javascript"> 
 
\t var nums = new Array(); 
 
\t var N = prompt("How many numbers would you like to enter? "); 
 
\t N = parseInt(N); 
 
\t var i = 0, s = 0; 
 
\t for(i = 0; i <= N - 1; i++) 
 
\t { 
 
\t \t var x = parseInt(prompt("Enter your numbers: ")); 
 
\t \t s += x; 
 
\t \t document.write("Number you chose: " + x + "<br />"); 
 
\t } 
 
\t var ave = s/N; 
 
\t document.write("Average: " + ave + "<br />"); 
 
</script>

0
<script> 
     var nums = new Array(); 
     var N = prompt("How many numbers would you like to enter? "); 
     N = parseInt(N); 
     var i = 0; 
     for (i = 0; i <= N - 1; i++) { 
      // convert string to integer 
      nums[i] = parseInt(prompt("Enter your numbers: ")); 
      document.write("Number you chose: " + nums[i] + "<br />"); 
     } 

     var sum = nums.reduce(function(prev, cur) { 
      return prev + cur; 
     }, 0); 

     var avg = sum/N; 
     console.log(avg); 
</script> 
0

入住此...

<title> 
    Title</title> 
<script type="text/javascript"> 
    function getSum(total, num) { 
    return total + num; 
    } 

    var nums = new Array(); 
    var N = prompt("How many numbers would you like to enter? "); 
    N = parseInt(N); 
    var i = 0; 

    for (i = 0; i <= N - 1; i++) { 
    nums[i] = parseInt(prompt("Enter your numbers: ")); 
    document.write("Number you chose: " + nums[i] + "<br />"); 

    } 
    document.write("Avg. of entered numbers = " + (nums.reduce(getSum))/nums.length); 

</script> 

<body> 
</body> 

检查这个小提琴https://jsfiddle.net/45ab1812/1/

+0

这给出了输入数字的总和不是平均值。 – Bhargav

+0

糟糕。谢谢 。更新我的答案和小提琴 – Harshal

0

首先,你可以在你的定义var i = 0 for循环, i <= N - 1i < N相同。编写循环的更简单的方法是...... for(var i = 0; i < N; i++)(也从上面删除var N = 0;)。

现在没有必要将用户的数字放到数组中以获得它们的平均值。所有你需要的平均值是数字和数字的总和。

JavaScript的另一个很酷的事情是,它可以自由地将您正在使用的变量转换为适合所使用上下文的变量类型。这意味着N = parseInt(N);在您的情况下不是必需的,因为它只能被视为循环中的整数。

如果考虑到上述两个注意事项,可以使用以下代码之一。

解决方案1:无阵列,只是保持数字之和量

//Prompt the user how many numbers they would like to enter 
var N = prompt("How many numbers would you like to enter? "); 

//Set sum to 0, which gives us a base to add each number to it. 
var sum = 0; 

//Complete this loop the same amount of times as the user entered in the prompt 
for (var i = 0; i < N; i++) { 

    //Add the users response to the sum of responses 
    sum += parseInt(prompt("Enter your numbers: ")); 
} 

//Write into the document the sum of 
document.write("Avg. of entered numbers = " + sum/N); 

但是,如果你真的想使用数组你的问题的状态,你可以使用下面的代码。

解决方案2:数组,同时保持和

//Prompt the user how many numbers they would like to enter 
var N = prompt("How many numbers would you like to enter? "); 

//Create an empty array to push elements to it 
var nums = new Array(); 

//Set sum to 0, which gives us a base to add each number to it. 
var sum = 0; 

//Complete this loop the same amount of times as the user entered in the prompt 
for (var i = 0; i < N; i++) { 

    //Get the users response to a variable 
    var response = parseInt(prompt("Enter your numbers: ")); 

    //Add that variable to the sum 
    sum += response; 

    //And also push that variable to the array 
    nums.push(response); 
} 

//Write into the document the sum of the document 
document.write("Avg. of entered numbers = " + sum/nums.length); 

的跟踪如果您发现有我们用nums.length代替N。如果您遇到不确定用户输入多少个数字的情况,则可以使用数组长度来查看输入的数量。

现在,您可以在不使用for循环中的数组总和的情况下使用数组的同时执行更简单的方法。这利用了许多其他答案已经使用的reduce函数。

解决方案3:只是一个数组!

//Prompt the user how many numbers they would like to enter 
var N = prompt("How many numbers would you like to enter? "); 

//Create an empty array to push elements to it 
var nums = new Array(); 

//Complete this loop the same amount of times as the user entered in the prompt 
for (var i = 0; i < N; i++) { 

    //Push users response to the original array 
    nums.push(parseInt(prompt("Enter your numbers: "))); 

} 

//Use the reduce function to get the sum of the array, and then divide it by the amount of elements in the array. 
document.write("Avg. of entered numddbers = " + (nums.reduce((a, b) => a + b)/nums.length));