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