如何计算数组中元素的总和和平均值?

284

我遇到了将数组所有元素相加并计算它们的平均值的问题。我该怎么做,并在当前代码中实现它?如下所示,这些元素应该被定义。

<script type="text/javascript">
//<![CDATA[

var i;
var elmt = new Array();

elmt[0] = "0";
elmt[1] = "1";
elmt[2] = "2";
elmt[3] = "3";
elmt[4] = "4";
elmt[5] = "7";
elmt[6] = "8";
elmt[7] = "9";
elmt[8] = "10";
elmt[9] = "11";

// Problem here
for (i = 9; i < 10; i++){
  document.write("The sum of all the elements is: " + /* Problem here */ + " The average of all the elements is: " + /* Problem here */ + "<br/>");
}   

//]]>
</script>

62
var elmt = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 这样会更好。 - James M
35个回答

-1

var arr = [1,2,3,4,5]

function avg(arr){
  var sum = 0;
  for (var i = 0; i < arr.length; i++) {
    sum += parseFloat(arr[i])
  }
  return sum / i;
}

avg(arr) ======>>>> 3

这适用于字符串作为数字或数组中的数字。


需要对你的答案进行一些解释。 - David Hoelzer
你是对的:将sum定义为数字,这样现在就可以工作了。将一个数组传递给函数,它会输出该数组的平均值。 - dan chow

-1

HTML内容项目的平均值

使用jQuery或JavaScript的querySelector,您可以直接访问格式化数据...例如:

<p>Elements for an average: <span class="m">2</span>, <span class="m">4</span>,
   <span class="m">2</span>, <span class="m">3</span>.
</p>

所以,使用jQuery你就可以

var A = $('.m')
  .map(function(idx) { return  parseInt($(this).html()) })
  .get();
var AVG = A.reduce(function(a,b){return a+b}) / A5.length;

查看其他 4 种访问项并计算平均值的方法:http://jsfiddle.net/4fLWB/


2
因为楼主要求做X,而你告诉他如何做Y,然后再做X,所以被踩了。此外,从DOM中提取数据而不是从数据创建DOM的想法似乎是你想避免的。 - eremzeit
嗨@eremzeit,感谢关注。我使用粗体标题来表明“这是另一种情况,其中内容转换为HTML”,请考虑一下...关于相关性,这种使用(直接从用户看到的HTML访问数据)不是学术游戏...它涉及到“可审计的真相”,这就是HTML中的真相(!),而不是在javascript中“对人类隐藏”...不仅仅是在维基百科上,还有典型案例:PMC上的370万篇科学文章LexML上660万份立法文件。有些人不仅仅用js设计和制作游戏,还会开发审计工具。 - Peter Krauss

-2
    var scores =[90, 98, 89, 100, 100, 86, 94];
        var sum = 0;
        var avg = 0;
        for(var i = 0; i < scores.length;i++){
  //Taking sum of all the arraylist
            sum = sum + scores[i];   
                }
  //Taking average     
             avg = sum/scores.length;        
  //this is the function to round a decimal no    
             var round = avg.toFixed();
             console.log(round);

1
欢迎来到 Stack Overflow。您的答案应该详细解释为什么以及如何回答这个问题。虽然鼓励使用代码片段,但您应该解释代码,以便访问者可以理解它。这里有一个如何回答的指南:https://stackoverflow.com/help/how-to-answer - ChrisM

-3

我有10个元素(就像例子中一样),所以我做了:

( elmt[0] + elmt[1] + elmt[2] + elmt[3] + elmt[4] +
  elmt[5] + elmt[6] + elmt[7] + elmt[8] + elmt[9] ) / 10

-3
我会推荐在这种情况下使用D3。它是最易读的(并提供了两种不同的平均值)。
let d3 = require('d3');
let array = [1,2,3,4];
let sum = d3.sum(array); //10
let mean = d3.mean(array); //2.5
let median = d3.median(array); 

5
仅仅为了计算平均值就添加整个 D3 库是荒谬的。 - gotofritz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接