I have an object:
let lastPosts = {
id1: {
date: new Date("10/10/2000 11:30:34"),
},
id2: {
date: new Date("10/10/2000 10:00:00"),
},
id3: {
date: new Date("10/10/2000 10:01:30"),
},
id4: {
date: new Date("11/10/2000 13:09:30"),
},
id5: {
date: new Date("8/10/2005 18:10:15"),
},
id6: {
date: new Date("11/10/2000 10:00:11"),
},
id7: {
date: new Date("10/10/2000 10:00:01"),
},
id8: {
date: new Date("15/10/2000 11:30:34"),
},
id9: {
date: new Date("7/10/2002 11:30:34"),
},
id10: {
date: new Date("8/10/2005 18:10:14"),
},
id11: {
date: new Date("11/10/2000 10:00:00"),
},
};
and I need to ensure that "lastPosts" only contains 9 posts (elements), deleting the remaining oldest posts.
function deleteOldestLastPosts(lastPosts) {
if (Object.keys(lastPosts).length > 9) {
// What can I do here?
}
}
So, that I have the following result:
{
id1: {
date: new Date("10/10/2000 11:30:34"),
},
id3: {
date: new Date("10/10/2000 10:01:30"),
},
id4: {
date: new Date("11/10/2000 13:09:30"),
},
id5: {
date: new Date("8/10/2005 18:10:15"),
},
id6: {
date: new Date("11/10/2000 10:00:11"),
},
id8: {
date: new Date("15/10/2000 11:30:34"),
},
id9: {
date: new Date("7/10/2002 11:30:34"),
},
id10: {
date: new Date("8/10/2005 18:10:14"),
},
id11: {
date: new Date("11/10/2000 10:00:00"),
},
}
Any ideas?
Sort all the values by date. Remove the newest 9 elements from this sorted array, producing an array of the dates to delete. Then loop through the properties, removing it if it's in the array.
function deleteOldestLastPosts(lastPosts) {
let values = Object.values(lastPosts);
if (values.length > 9) {
let datesToDelete = values.map(el => el.date).sort((a, b) => a - b);
datesToDelete.splice(-9);
Object.entries(lastPosts).forEach(([key, {
date
}]) => {
if (datesToDelete.includes(date)) {
delete lastPosts[key];
}
});
}
}
let lastPosts = {
id1: {
date: new Date("10/10/2000 11:30:34"),
},
id2: {
date: new Date("10/10/2000 10:00:00"),
},
id3: {
date: new Date("10/10/2000 10:01:30"),
},
id4: {
date: new Date("11/10/2000 13:09:30"),
},
id5: {
date: new Date("8/10/2005 18:10:15"),
},
id6: {
date: new Date("11/10/2000 10:00:11"),
},
id7: {
date: new Date("10/10/2000 10:00:01"),
},
id8: {
date: new Date("15/10/2000 11:30:34"),
},
id9: {
date: new Date("7/10/2002 11:30:34"),
},
id10: {
date: new Date("8/10/2005 18:10:14"),
},
id11: {
date: new Date("11/10/2000 10:00:00"),
},
};
deleteOldestLastPosts(lastPosts);
console.log(lastPosts);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With