JSFiddle - React, Tailwind, and code Playground

JavaScript

var a = [
    {
        date: "2015-01-22",
        dog: 1
    },
    {
        date: "2015-01-22",
        cat: 2
    },
    {
        date: "2015-01-22",
        duck: 3
    },
    {
        date: "2014-12-15",
        bird: 4
    },
    {
        date: "2014-12-01",
        fly: 5
    }
];

var group = function (array, key) {
    var result = [],
        temp = {},
        item,
        string,
        i, prop;
    
    for (i = 0; i < array.length; i++) {
        item = array[i];
        string = item[key].toString();
        
        if (!temp[string]) {
            temp[string] = {};
        }
        
        for (prop in item) {
            temp[string][prop] = item[prop];
        }
    }
    
    for (prop in temp) {
        result.push(temp[prop]);
    }
    
    return result;
};

var b = group(a, "date");
console.dir(b);