У меня есть массив объектов, и у всех них есть по крайней мере 1 другой объект с таким же идентификатором. Я пытаюсь уменьшить этот массив, чтобы вернуть только объект с самой последней датой. Пример массива того, с чем я имею дело:
var arrObj = [
{id: 1, startDate: 2019-10-09},
{id: 1, startDate: 2019-10-05},
{id: 1, startDate: 2019-09-30},
{id: 2, startDate: 2018-08-05},
{id: 2, startDate: 2018-09-05}
]
Вывод, который я пытаюсь достичь:
var newArrObj = [
{id: 1, startDate: 2019-10-09},
{id: 2, startDate: 2018-09-05}
]
Я нашел много примеров уменьшения или удаления дублирующихся объектов с помощьюИдентификатор полностью, но я не могу найти пример, чтобы сначала идентифицировать объекты с одинаковым идентификатором, а затем уменьшить его с помощью второго свойства. К сожалению, я продолжаю создавать множество вложенных циклов. Есть ли элегантный способ сделать это? Я должен быть в состоянии сделать это в ES5 или более ранней версии.
var uniqueIDs = [];
for (a in arrObj) {
if(uniqueIDs.indexOf(arrObj[a].id) != -1) {
uniqueIDs.push(arrObj[a].id);
}
}
var newArrObj = [];
for(b in uniqueIDs) {
var uniqueId = uniqueIDs[b];
var uniqueIdObjs = arrObj.filter(function(x) {
return x.id === uniqueId;
});
for(c in uniqueIdObjs) {
var objDate = uniqueIdObjs[c].startDate;
//This is where I get stuck
}
}