JSFiddle - React, Tailwind, and code Playground
by JThomas
JavaScript
//Inital data, Using 23/02/2015 = Advert 1(2), Advert 2(2)
var dates = ko.observableArray([
{date: '23/02/2015', advert: 'Advert 1' },
{date: '02/01/2015', advert: 'Advert 2' },
{date: '23/02/2015', advert: 'Advert 2' },
{date: '01/01/2014', advert: 'Advert 15'},
{date: '23/02/2015', advert: 'Advert 2' },
{date: '12/12/2012', advert: 'Advert 2' },
{date: '23/02/2015', advert: 'Advert 1' },
{date: '08/08/2008', advert: 'Advert 1' }
]);
function totalAdvertsFor(date){
if(!date) return {};
var counts = {};
var total = 0;
//Get all the records for the target date
var records = dates().filter(function(r) {
if(r.date == date) return r;
});
records.forEach(function(e){
var propName = e.advert.replace(" ", "");
//Doesn't exsist, initalize it to 0
if(!counts[propName]){
counts[propName] = 0;
}
counts[propName]++;
total++;
});
return {adverts: counts, total: total};
}
var t = totalAdvertsFor('23/02/2015');
console.log(t);
console.log('--------------------------');
for(var prop in t.adverts){
console.log(prop + ' = ' + t.adverts[prop]);
}
console.log(t.total);