JSFiddle - React, Tailwind, and code Playground

JavaScript

function merge(key) {
    var length = arguments.length, lists = [], newlist = [];
    for (var i = 1; i < length; i++) lists.push(arguments[i].slice());

    while (length = lists.length) {
        var min = Infinity;

        for (var i = 0; i < length; i++) {
            var list = lists[i];
            var value = list[0][key];

            if (value < min) {
                var index = i;
                min = value;
            }
        }

        var list = lists[index];
        newlist.push(list.shift());
        if (!list.length) lists.splice(index, 1);
    }

    return newlist;
}

var listA = [
    {name: "Mike", exercisedateandtime: 1299233593000, exercise: "Jumping Jacks"}, 
    {name: "Mike", exercisedateandtime: 1299237012000, exercise: "Running"}
];

var listB = [
    {name: "Charles", exercisedateandtime: 1299233712000, exercise: "Swimming"},
    {name: "Charles", exercisedateandtime: 1299233831000, exercise: "Swimming"},
    {name: "Charles", exercisedateandtime: 1299240620000, exercise: "Swimming"}
];

var listC = [
    {name: "William", exercisedateandtime: 1299237320000, exercise: "Fishing"},
    {name: "William", exercisedateandtime: 1299237611000, exercise: "Motor Boating"},
    {name: "William", exercisedateandtime: 1299305420000, exercise: "Cycling"}
];

var listD = merge("exercisedateandtime", listA, listB, listC);

alert(JSON.stringify(listD));