Используя приведенный ниже код, я смог получить дубликат, но я пытаюсь получить самый последний объект из каждого препарата, используя свойство transactionDate
. Ниже приведен код, который фильтрует только дубликаты любой идеи о том, как получить самую последнюю транзакцию для каждого препарата.
main.js
var drugsArray = [{
drugName: "ADVIL",
transactionDate: "2018-12-15"
},{
drugName: "ADVIL",
transactionDate: "2018-12-28"
},
{
drugName: "ATRIPLA",
transactionDate: "2018-12-05"
},{
drugName: "ATRIPLA",
transactionDate: "2018-12-21"
}
];
function getDrugs(data) {
let filtered = data.reduce((accumulator, current) => {
if (! accumulator.find(({drugName}) => drugName === current.drugName)) {
var checkRecentDate = getLatestDateSave(current.transactionDate)
if(checkRecentDate) {
accumulator.push(current);
}
}
return accumulator;
}, []);
console.log(filtered);
}
getDrugs(drugsArray);
получить объект последней даты с помощью этой функции
function getLatestDateSave(xs) {
if (xs.length) {
return xs.reduce(function(m, i) {
return (i.MeasureDate > m) && i || m;
}, "").MeasureDate;
}
}
Ожидаемый результат -
result = [{
drugName: "ADVIL",
transactionDate: "2018-12-28"
},
{
drugName: "ATRIPLA",
transactionDate: "2018-12-21"
}
];