如何在数组数组中添加每组数字? (JavaScript的)

时间:2016-08-03 12:26:52

标签: javascript arrays

我正在努力设计一个循环,循环遍历数组并将每个数字加在一起,计算平均值,然后输出到控制台。

这是我的代码;



var data = [
  [3, 6, 14, 17, 30, 40, 44, 66, 69, 84, 92, 95],
  [100, 17, 26, 28, 29, 34, 38, 59, 78, 82, 84, 93],
  [6, 12, 22, 25, 35, 44, 45, 57, 60, 61, 78, 80],
  [6, 11, 14, 19, 33, 50, 57, 58, 61, 88, 89, 97],
  [6, 13, 23, 28, 39, 44, 50, 55, 58, 72, 80, 88],
  [6, 8, 22, 26, 48, 50, 55, 65, 77, 84, 93, 99]
]

var calcTotal, arrayTotal, totalSum;
calcTotal = [];
arrayTotal = [];
totalSum = [];
arrayTotal.push(data[0])
totalSum = data[0].reduce(function(a, b) {
  return a + b;
});
calcTotal.push(totalSum)


console.log(Math.round(totalSum / 12))




http://plnkr.co/edit/Ses4XApKEdo2CCZmsis7?p=preview

到目前为止,我只使用它来显示一个结果,理想情况下,我会在每个数组中将单个数组中的平均值输出到控制台。

我一直在玩for / forEach循环,但是如果有人可以提供一些帮助/建议,似乎无法破解它?

由于

3 个答案:

答案 0 :(得分:1)

这很简单:您可以编写两个函数addaverage,使用Array#mapArray#reduce

var data = [
  [3, 6, 14, 17, 30, 40, 44, 66, 69, 84, 92, 95],
  [100, 17, 26, 28, 29, 34, 38, 59, 78, 82, 84, 93],
  [6, 12, 22, 25, 35, 44, 45, 57, 60, 61, 78, 80],
  [6, 11, 14, 19, 33, 50, 57, 58, 61, 88, 89, 97],
  [6, 13, 23, 28, 39, 44, 50, 55, 58, 72, 80, 88],
  [6, 8, 22, 26, 48, 50, 55, 65, 77, 84, 93, 99]
];

function add(a, b) {
  return a + b;
}

function average(list) {
  return list.reduce(add) / list.length;
}

document.body.textContent = data.map(average);

答案 1 :(得分:0)

据我所知,你需要向控制台显示每行的平均值吗?

你已经用单行完成了很好的工作,只需要用forEach包装,这里有工作小提琴:https://jsfiddle.net/enowacki/dhdc1ztc/2/

const data = [
  [3, 6, 14, 17, 30, 40, 44, 66, 69, 84, 92, 95],
  [100, 17, 26, 28, 29, 34, 38, 59, 78, 82, 84, 93],
  [6, 12, 22, 25, 35, 44, 45, 57, 60, 61, 78, 80],
  [6, 11, 14, 19, 33, 50, 57, 58, 61, 88, 89, 97],
  [6, 13, 23, 28, 39, 44, 50, 55, 58, 72, 80, 88],
  [6, 8, 22, 26, 48, 50, 55, 65, 77, 84, 93, 99]
];

const result = data.map((arr) => {
  const rowSum = arr.reduce((prev, curr) => prev + curr);
  const rowCount = arr.length;
  const avg = Math.round(rowSum / rowCount);
  
  return avg;
});

console.log(result);

我已经提取了一些额外的变量,因此您可以清楚地看到正在发生的事情,如果不需要,可以省略它们。

答案 2 :(得分:0)

拼合:

var flat = [].concat.apply([], data);

和:

var sum = flat.reduce((a, b) => a+b, 0);
console.log("Avg:" + Math.round(sum / flat.length);