У меня есть массив, который я хочу манипулировать, потому что мне нужно использовать его в качестве источника данных для 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] будет средняя продолжительность месяца 1 в 2010 году
У меня есть некоторые проблемы, включающие это хороший способ. Я могу создать сумму длины, но делить сумму сложно. Код у меня есть:
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' компонент исходных данных не имеет значения? Всегда ли сортируются входные данные по месяцам и годам? Откуда берутся входные данные (может быть, эта часть будет изменена для немедленного предоставления необходимого формата)? – CBroe