Во-первых, массив надо отсортировать по датам, если он у вас уже не упорядочен. В любом языке программирования есть какая-то функция sort(), которой можно как-то задать, как сравнивать сортируемые объекты (тут вам надо сравнивать только даты).
Ваше условие не очень понятно, но вот, как сгрупировать массив по датам:
st = 0;
end = 0;
while (st < a.length) {
end = st + 1;
while(end < a.length && a[end].date == a[end-1].date) end++;
console.log(a[st].date);
for (st = st; st < end; st++) {
console.log(a[st].id);
}
}
Тут мы просто откусываем от массива кусок с одинаковыми датами, пока массив не кончится. Если вам нужна только последняя группа, то можно откусить только один раз с конца:
end = a.length - 1;
st = end - 1;
while (st >= 0 && a[st].date == a[st+1].date) st--;
console.log(a[end].date);
for (st = st+1; st <= end; ++st)
console.log(a[st].id);
Только учтите, этот код не работает на пустом массиве. Надо отдельно проверить этот случай.