SO - 16730526

by Tomasz

HTML

<div id='result'></div>

CSS

table, table td, table th {
    border: 1px black solid;
}

JavaScript

var data = [{
    date: '2013-05-12',
    holiday: "One type of holiday",
    dayType: "Weekend"
}, {
    date: '2013-05-13',
    holiday: "Another type",
    dayType: "Weekend"
}, {
    date: '2013-05-14',
    holiday: "Another type",
    dayType: "Work"
}, {
    date: '2013-05-15',
    holiday: "",
    dayType: "Work"
}, {
    date: '2013-05-16',
    holiday: "Another type",
    dayType: "Work"
}];
console.log(data);

var summary = {}, d, tmp, type;
for (var i = 0; i < data.length; i++) {
    var d = data[i];
    if (d.holiday.length > 0) {
        type = d.dayType == 'Weekend' || d.dayType == 'Free' ? 'Weekend' : 'Work';
        tmp = summary[d.holiday];
        if (!tmp) {
            tmp = {
                Weekend: 0,
                Work: 0
            };
            summary[d.holiday] = tmp;
        }
        summary[d.holiday][type] += 1;
    }
}
var table = '<table><thead><tr><th>Type</th><th>Work days/Total (including work days)</th></tr></thead><tbody>';
$.each(summary, function (k, v) {
    table += '<tr><td>' + k + '</td><td>' + v.Work + '/' + (v.Weekend + v.Work) + '</td></tr>';
});
table += '</tbody></table>';
$('div#result').html(table);