首页 > 解决方案 > 如何按日期从对象中删除数据

问题描述

如何从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
}

在这里,我想删除user4user5,因为它们是在 12 个多小时前添加的。

标签: javascriptreact-native

解决方案


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);

推荐阅读