javascript - 如何按日期从对象中删除数据
问题描述
如何从13 小时前添加的Object中删除属性及其值?
如果对象中的数据超过12小时,我想删除它。
例子:
const myData = {
user1: {date: '', data: [...]}, // added to myData 1 hour ago
user2: {date: '', data: [...]}, // added to myData 5 hour ago
user3: {date: '', data: [...]}, // added to myData 12 hour ago
user4: {date: '', data: [...]}, // added to myData 13 hour ago
user5: {date: '', data: [...]}, // added to myData 15 hour ago
}
在这里,我想删除user4和user5,因为它们是在 12 个多小时前添加的。
解决方案
Object.entries()
您可以每小时运行一次迭代并检查旧数据(maxDate
根据需要为每次执行设置):
var obj = {
user1: {
date: new Date(2019,6,3,12,0,0)
},
user2: {
date: new Date(2019,6,3,13,0,0)
}
}
console.log(obj);
var maxDate = new Date(2019,6,3,12,30,0);
Object.entries(obj).forEach(x => {
const date = x[1].date;
if (date > maxDate) {
delete obj[x[0]]
}
})
console.log(obj);
编辑
使用间隔检查此示例
const checkEntries = function() {
var maxDate = getMaxDate();
Object.entries(obj).forEach(x => {
const date = x[1].date;
if (date > maxDate) {
delete obj[x[0]]
}
});
}
/*
* Get the time, 12 hours ago
*/
function getMaxDate() {
const now = new Date();
const now_tm = now.getTime();
const maxDate_tm = now_tm - (12*60*60*1000);
return new Date(maxDate_tm);
}
const timer = setInterval(checkEntries, 3600000);
推荐阅读
- python - 如何将文本文件行附加到 dbf 表?
- fortran - Fortran 基本条件和循环代码错误
- ruby-on-rails-5 - 如何防止 ActiveResource 模型发出请求?
- jenkins - Groovy 请求具有多 url 编码的 Jenkins Rest API
- powerbi - Power BI - 10 月 1 日是否介于两个日期之间
- java - 如何在本机查询 JPA 中传递参数
- c# - 如何使用 Webview2.Effect
- angular - 角度项目中的 Observables (rxjs) 嵌套订阅
- csv - 打开 csv,无需任何数据更改/格式化
- javascript - 与条件承诺链反应并在发送调度之前等待它们