Если массивы a и b потом не нужны, то эффективнее изменять b а не создавать новый:
var a=[
{date: "19980105", open: 5.995, high: 6, low: 5.995, close: 5.999},
{date: "19980108", open: 5.993, high: 6, low: 5.993, close: 5.999}
], b = [
{date: "19980105"},
{date: "19980106"},
{date: "19980107"},
{date: "19980108"}
];
function fn(a, b) {
for(var i = 0, j = 0, l = b.length; i < l; i++){
if (a[j].date === b[i].date) b[i] = a[j++];
else b[i].empty = true;
}
return b
};
var c = fn(a,b);
alert(JSON.stringify(c, null, 4));
Тем более что вариант
рони всё рано меняет исходные массивы.)