二维阵列水平平均输出

时间:2013-11-20 10:05:13

标签: javascript

我遇到了问题而且我不知道如何把它放在for循环中。 我需要下一个矩阵的水平平均值:

1 2 3 4 5

5 4 3 2 1

3 2 1 4 5

到目前为止我得到了什么:

var dArray = [[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [3, 2, 1, 4, 5]];

    for (x=0; x<dArray.length; x++)
    {
      //this loop needs to go trough each horizontal matrix and put 
      //the average in a variable so i can print it later
      //average .... team[0][x] something?
      //document.write(average)
    }

最终产品是like this

我想在最后制作一张表并将每个&#34;数组放在平均值

Arr 0  1 2 3 4 5  average:

Arr 1  5 4 3 2 1  average:

Arr 2  3 2 1 4 5  average:

7 个答案:

答案 0 :(得分:1)

以您想要的语言执行此操作。 Java或Javascript。选一个。

for (int i = 0; i < rows; ++i)
{
   double sum = 0;
   for (int j = 0; j < columns; ++j)
   {
      sum = sum + matrix[i][j];
   }
   double avg = sum / columns;
   print(avg);
}

基本上,这是:对于矩阵中的每一行,创建所有元素的总和,然后将总和除以列数以找到行的平均值。

答案 1 :(得分:1)

这将计算并将您的值放在一个新的矩阵中,并在最后一列中显示平均值。

double[][] Table = new double[dArray.length][dArray[0].length+1];
double sum, avg;
for(int i = 0; i<dArray.length; i++)
{
    sum = 0;
    for(int j = 0; j<dArray[0].length; j++)
    {
        Table[i][j]=dArray[i][j];
        sum += dArray[i][j];
    }
    avg = sum/dArray[0].length;
    Table[i][dArray[0].length] = avg;
}

答案 2 :(得分:1)

var res = [];
for(i = 0;i<dArray.length;i++){

var tot=0;
for(j=0;i<dArray[i].length;j++){

tot +=dArray[i][j];

}
res.push(tot/dArray[i].length);
}
return res;

答案 3 :(得分:1)

方法:

var dArray = [[1, 2, 3, 4, 5],[5, 4, 3, 2, 1],[3, 2, 1, 4, 5]];
alert(dArray.map(function (a) {
    return (a.reduce(function (x, y) {return (x + y);})/a.length);
}));

<强>实施

<div id="matrix"></div>
<script>
    var dArray = [[1, 2, 3, 4, 5],[5, 4, 3, 2, 1],[3, 2, 1, 4, 5]];
    var buffer='';
    dArray.map(function (a) {
        buffer+= a.toString()+","+ (a.reduce(function (x, y) {return (x + y);})/a.length)+"<br/>";
    });
    document.addEventListener('DOMContentLoaded',function(){
        document.getElementById('matrix').innerHTML=buffer;
    },false);
</script>

答案 4 :(得分:1)

这段代码警告以类似表格的字符串结构化的数据。

var dArray = [[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [3, 2, 1, 4, 5]];

var str = '';
dArray.forEach(function(arr, index){ 
  var average = arr.reduce(function(sum, item){ return sum + item; })/arr.length;
  str += '\n Array ' + index + ':  ' + arr.join(' ') + '   average: ' + average;
});
alert(str);

答案 5 :(得分:1)

您可以在javascript中执行以下操作:

有一个div喜欢

<div id="matrix_output"> </div>

并添加javascript代码:

var dArray = [[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [3, 2, 1, 4, 5]];
 var texts='';
    for (i=0; i<dArray.length; i++)
    {
        sum=0;        
        for(j=0;j<dArray[i].length;j++){
          sum=sum+dArray[i][j];  
          texts=texts + dArray[i][j] + " \t";  
        }
        avg=sum/dArray[i].length;
        texts= texts + avg + " <br/>" ;
       dArray[i][dArray[i].length]=avg;

    }
 document.getElementById("matrix_output").innerHTML=texts;

请查看以下链接以供参考:

http://jsfiddle.net/xGZPL/

答案 6 :(得分:0)

使用mapreduce

var matrix = [[1, 2, 3, 4, 5],[5, 4, 3, 2, 1],[3, 2, 1, 4, 5]]
var result = matrix.map(row=>row.reduce((a,b) => a+b)/row.length);
console.log(result.join(', '));