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);