Здравствуйте!
Можете, пожалуйста, пояснить, что значат некоторые строчки этого кода? Суть его в следующем: сделать группировку по ID, затем, в рамках каждого ID, по дате, затем - посчитать значения value в рамках каждой даты. Код:
// 1 часть
var $container = $('.container'),
$blocks = $container.find('.block'),
results = {},
output = '';
$blocks.each(function () {
// 2 часть
var $this = $(this),
id = $this.find('.id').html(),
date = $this.find('.date').html(),
value = $this.find('.value').html();
// 3 часть
results[id] = results[id] || {};
results[id][date] = results[id][date] || 0;
results[id][date] += parseInt(value);
});
//4 часть
$.each(results, function (id, dates) {
$.each(dates, function (date, value) {
//5 часть
output += '<div class="block">' +
'<div class="id">' + id + '</div>' +
'<div class="date">' + date + '</div>' +
'<div class="value">' + value + '</div>' +
'</div>';
});
});
//6 часть
$container.html(output);
JS идёт вместе c 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>
<div class="block">
<div class="id">1</div>
<div class="date">02/21/2015</div>
<div class="value">222</div>
</div>
<div class="block">
<div class="id">1</div>
<div class="date">02/30/2015</div>
<div class="value">333</div>
</div>
<div class="block">
<div class="id">1</div>
<div class="date">02/30/2015</div>
<div class="value">444</div>
</div>
<div class="block">
<div class="id">2</div>
<div class="date">05/17/2015</div>
<div class="value">555</div>
</div>
</div>
Результат, который выдаёт код, понятен (работа кода на
JSFiddle). Понятны и некоторые его части, но есть пара вопросов.
- 1 часть. Тут всё понятно - вводим переменные.
- 2 часть. Здесь тоже ясно: тоже вводим переменные и даём им значения из HTML.
- 3 часть. Здесь я перестал понимать, что происходит.
- 4 часть. Также неведомо мне, что это такое.
- 5 часть. Здесь понятно, подготавливаем вывод.
- 6 часть. Выводим, вопросов нет.
Собственно, вопросы только по 3 и 4 части. Что же там происходит?
И ещё один дополнительный вопрос. Так как я не очень знаю jQuery, из кода до меня не дошло, как же осуществляется складывание значений value. Что мне следует изменить, если я захочу добавить, например, divы .value2 и в них не суммировать значения value, а найти среднее? Т.е. мне понадобиться их посчитать, затем сосчитать количество, а потом и разделить одно на другое, как же мне это сделать?
Благодарен за подсказки.
С уважением,
Александр.