У меня есть массив объектов, содержащий много повторяющихся / бесполезных данных. Мне нужно отфильтровать по идентификатору клиента и выбрать объект с самой последней датой. Данные выглядят примерно так:
let data = [
{
CUSTOMER_PERMANENT_ID: "2495",
EMAIL: "abs@gmail.com",
EVENT_ACTIVATION_TIME: "2019-10-25 13:57:38.79",
},
{
CUSTOMER_PERMANENT_ID: "2495",
EMAIL: "abs@gmail.com",
EVENT_ACTIVATION_TIME: "2019-10-28 20:04:49.016",
},
{
CUSTOMER_PERMANENT_ID: "2495",
EMAIL: "abs@gmail.com",
EVENT_ACTIVATION_TIME: "2019-10-28 20:04:49.019",
},
{
CUSTOMER_PERMANENT_ID: "5995",
EMAIL: "John@gmail.com",
EVENT_ACTIVATION_TIME: "2019-10-28 17:24:10.98",
}
]
Я пробовал следующую функцию, но она работает, только если есть два повторяющихся объекта, если их больше двух, возвращаются все объекты.
public fixDcppSelectedClientData() {
let result = [];
for (let item of this.arr) {
for (let checkingItem of this.arr) {
if (
this.arr.indexOf(item) !=
this.arr.indexOf(checkingItem) &&
item.CUSTOMER_PERMANENT_ID == checkingItem.CUSTOMER_PERMANENT_ID &&
new Date(item.EVENT_ACTIVATION_TIME).getTime() <
new Date(checkingItem.EVENT_ACTIVATION_TIME).getTime()
) {
if (result.indexOf(checkingItem) == -1) {
result.push(checkingItem);
}
}
}
}
console.log("filtered data is ", result);
}
Мне нужно больше изучить этот topi c, однако, если кто-нибудь может помочь тем временем, было бы здорово.
С уважением