Группировка по ID, затем по Date, затем суммирование Values
Для LeadProm
by Alexander Lashchevsky
HTML
<div class="container">
<div class="block">
<div class="id">1</div>
<div class="date">02/21/2015</div>
<div class="value">111</div>
<div class="value2">8</div>
</div>
<div class="block">
<div class="id">1</div>
<div class="date">02/21/2015</div>
<div class="value">222</div>
<div class="value2">88</div>
</div>
<div class="block">
<div class="id">1</div>
<div class="date">02/30/2015</div>
<div class="value">333</div>
<div class="value2">344</div>
</div>
<div class="block">
<div class="id">1</div>
<div class="date">02/30/2015</div>
<div class="value">444</div>
<div class="value2">654</div>
</div>
<div class="block">
<div class="id">2</div>
<div class="date">05/17/2015</div>
<div class="value">555</div>
<div class="value2">46</div>
</div>
</div>
JavaScript
$(function () {
var $container = $('.container'),
$blocks = $container.find('.block'),
results = {},
output = '';
$blocks.each(function () {
var $this = $(this),
id = $this.find('.id').html(),
date = $this.find('.date').html(),
value1 = $this.find('.value').html(),
value2 = $this.find('.value2').html();
results[id] = results[id] || {};
results[id][date] = results[id][date] || {};
results[id][date].field1 = (results[id][date].field1 || 0) + parseInt(value1);
results[id][date].field2 = (results[id][date].field2 || 0) + parseInt(value2);
});
$.each(results, function (id, dates) {
var count = Object.keys(dates).length;
$.each(dates, function (date, value) {
output += '<div class="block">' +
'<div class="id">' + id + '</div>' +
'<div class="date">' + date + '</div>' +
'<div class="value">' + value.field1 + '</div>' +
'<div class="value2">' + Math.round(value.field2 / count) + '</div>' +
'</div>';
});
});
$container.html(output);
});