JavaScript 如何删除对象中最旧元素 保留指定数量最新条目
实现方案
逻辑思路
- 首先判断帖子总数是否超过9条,仅超出时执行删除逻辑
- 将原对象的键值对转换为数组,每一项包含帖子id和对应的帖子内容
- 按照帖子的发布日期升序排序,排在数组最前端的就是时间最早的帖子
- 计算需要删除的帖子数量 = 当前总帖子数 - 9
- 依次删除排序后最前面的N条最早帖子即可
完整实现代码
function deleteOldestLastPosts(lastPosts) { if (Object.keys(lastPosts).length > 9) { // 将帖子按发布时间从早到晚排序 const sortedPosts = Object.entries(lastPosts).sort((postA, postB) => { return postA[1].date - postB[1].date }) // 计算需要删除的帖子数量 const needDeleteNum = Object.keys(lastPosts).length - 9 // 删除最早的指定数量的帖子 for (let i = 0; i < needDeleteNum; i++) { delete lastPosts[sortedPosts[i][0]] } } }
效果验证
你给出的示例中原有11条帖子,执行函数后会删除时间最早的2条:id2(2000/10/10 10:00:00)和id7(2000/10/10 10:00:01),剩余9条帖子和你给出的期望结果完全一致。
内容的提问来源于stack exchange,提问作者Raul
相关产品推荐
相关产品推荐

