好的我开始时我会吮吸数学,这让我头晕目眩,所以请原谅我,如果我只是愚蠢的话。哈哈
我有一个或多个数组看起来像这样,只有更多的数据。
[
[3,4,6],
[4,7,9],
[3,8,9],
[7,3,9]
]
因为它有太多的数据,我需要将这些值平均放到图表上。图表上的大约600个图表不会很有趣哈哈
但我不想平均我需要的所有阵列的平均值。像平均3,4,3,7然后等。那有意义吗?
我已经有了一个能够平均数组的函数,但是我的想法无法解决这个问题。
average: function() {
var cnt, tot, i;
cnt = arguments.length;
tot = i = 0;
while (i < cnt) tot+= arguments[i++];
return tot / cnt;
},
任何帮助都将受到赞赏,并将阻止我将计算机扔出窗外。 :)
答案 0 :(得分:3)
var twoDimArr = [
[3, 4, 6],
[4, 7, 9],
[3, 8, 9],
[7, 3, 9]
];
for (var i = 0; i < twoDimArr[0].length; i++) {
var sum = 0;
for (var j = 0; j < twoDimArr.length; j++) {
sum += twoDimArr[j][i];
}
var avg = sum / twoDimArr.length;
console.log(avg);
}
答案 1 :(得分:0)
数组格式错误。但那没关系。这可以通过循环来修复。此代码循环遍历它们并存储每个代码的总和,计数和平均值。
<html>
<head>
<script>
// sample data
var samarr = [[1,2,3],[3,7,9],[2,8,4],[6,2,2],[9,1,5]];
// new array that holds total for each column (0,1,2); in each I am storing 3 values (sum,count, avg).
var newarray = [[0,0,0],[0,0,0],[0,0,0]];
//for each array in sample data...
for(i = 0; i < samarr.length; i++){
//for each element in the array
for(j=0; j<samarr[i].length; j++){
//put the data in the new array
//this keeps a rolling value of the sum
newarray[j][0] += samarr[i][j];
//this keeps a rolling value of the number of elements
newarray[j][1]++;
//this keeps a rolling value of the average
newarray[j][2] = newarray[j][0]/newarray[j][1];
}
}
//This dumps the new array to an alert box. ;-)
alert(newarray);
</script
</head>
<body>
</body>
</html>