JavaScript:如何找到给定矩阵的每一行的平均值? (多维数组)

时间:2018-09-21 21:19:44

标签: javascript matrix multidimensional-array

我已经通过Stack Overflow进行了彻底的搜索,YouTube和Google无法为上述问题提供准确的答案。我知道如何制作多维数组(正如您稍后将在我的代码中看到的那样),并且我知道如何在单个数组中甚至在分离出的单个数组中找到平均值(再次在您的代码中看到)。但是我无法弄清楚如何使用我创建的多维数组并找到每行的平均值,因为它是嵌套在另一个数组内部的数组。如果有人能确切解释我的代码在做什么错,我将不胜感激。

谢谢! -德雷克 下面的代码:

矩阵代码:

var matrix = [ // Main Array
    [20,20,3], // nested first Array inside Main Array's Element 1
    [40,30,40] // nested second Array inside of Main Array's Element 2
]

这是我的代码,用于查找单个数组的平均值。或者,您也可以使用它来查找单个数组的平均值,如下所述。

 <script>
  var array1 = [1,2,3];
  var array2 = [1,3,5];


 function average(array){
 var length = 0;
 var sum = 0;
 var average_array = 0;

 for(var i = 0; ; i++){
 if (array[i]){
 length++;
 sum += array[i];
 }
 else{
 break;
 }
 average_array = sum/length;
 //console.log("The average is " + average_array);
 return average_array;
 }
 }

var average1 = average(array1);
document.write("The average for array1 is " + average1);
</script>
<body>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

使用mapreduce

var matrix = [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6], [3, 4, 5, 6, 7]];
var averages = matrix.map(row => row.reduce((a,b)=>a+b)/row.length);
var result = averages.map((avg,i)=> `Row ${i+1} Average is ${avg}.`)
console.log(result.join('\n'));