【发布时间】:2015-04-17 11:23:00
【问题描述】:
我有一个想要操作的数组,因为我需要将它用作 D3.js 的数据源。这个数据集的一个例子是:
var data = [
{day: 1, month: 1, length: 100, year: 2010},
{day: 2, month: 1, length: 125, year: 2010},
{day: 3, month: 1, length: 150, year: 2010},
{day: 4, month: 1, length: 175, year: 2010},
{day: 1, month: 2, length: 225, year: 2010},
{day: 2, month: 2, length: 250, year: 2010},
{day: 3, month: 2, length: 325, year: 2010},
{day: 1, month: 1, length: 225, year: 2011},
{day: 1, month: 1, length: 150, year: 2011},
{day: 1, month: 1, length: 190, year: 2011},
{day: 1, month: 2, length: 210, year: 2011},
{day: 2, month: 2, length: 110, year: 2011},
{day: 3, month: 2, length: 160, year: 2011},
{day: 4, month: 2, length: 190, year: 2011},
]
在这种情况下,我想创建一个新数组,其中两个数组保存一个月的平均长度。例如:
var newData = [ [137.5, 266.7], [183.33, 167.5] ]
其中 newData[0][1] 是 2010 年第 1 个月的平均长度。
我有一些问题以一种很好的方式结合它。我可以创建长度的总和,但除以总和是困难的。我的代码是:
data.forEach(function (el) {
for (var j = 0; j <= 3; j++) {
if (el.year === 2010 + j) {
for (var i = 1; i <= 2; i++) {
if (el.month === i) {
var oldLength = dataNew[j][i - 1] || 0;
var newLength = el.length + oldLength;
dataNew[j][i - 1] = newLength;
}
}
}
}
});
如何调整此函数,以便在 newData 中保存平均值而不是总和。
【问题讨论】:
-
所以原始数据的
day组件无关紧要?输入数据是否总是按月和年“排序”?输入数据来自哪里(也许可以修改该部分以立即提供所需的格式)?
标签: javascript arrays d3.js