Javascript 基于ID从JSON中删除元素

Javascript 基于ID从JSON中删除元素,javascript,json,Javascript,Json,我有两个JavaScript数组,需要根据ID和时间戳进行排除 var str = [{"id":"5","name":"Test 1","ends":"2020-04-05 10:00"},{"id":"6","name":"Test 2","ends":"2020-03-29 12:33"},{"id":"8","name":"Test 3","ends":"2020-08-29 12:33"}]; var exclude = [5,8]; 所以我希望按日期过滤(删除所有比现在旧的),并

我有两个JavaScript数组,需要根据ID和时间戳进行排除

var str = [{"id":"5","name":"Test 1","ends":"2020-04-05 10:00"},{"id":"6","name":"Test 2","ends":"2020-03-29 12:33"},{"id":"8","name":"Test 3","ends":"2020-08-29 12:33"}];

var exclude = [5,8];
所以我希望按日期过滤(删除所有比现在旧的),并删除那些在排除数组中ID的

我真的不知道怎么做。请帮助我,因为我刚刚开始学习JavaScript


谢谢。

您可以执行以下操作以获得结果:

var str = [{"id":"5","name":"Test 1","ends":"2020-05-07 10:00"},{"id":"6","name":"Test 2","ends":"2020-03-29 12:33"},{"id":"8","name":"Test 3","ends":"2020-08-29 12:33"}];
var exclude = [5,8];
var today = new Date().getTime(); 

var filterDate = str.filter(function(el){
   var otherDate = new Date(el.ends).getTime();
   return !Object.keys(el).some(k => 
       el['id'].toLowerCase().includes(exclude))
           && (otherDate > today)     
   })

   console.log("filterDate", filterDate);
一把小提琴帮助你:


修改@Thalaivar的答案,以考虑日期的时间

var str = [
  {"id":"5","name":"Test 1","ends":"2020-05-07 10:00"},
  {"id":"6","name":"Test 2","ends":"2020-05-07 09:55"},
  {"id":"8","name":"Test 3","ends":"2020-08-29 12:33"}
];

var exclude = [5,8];

var filterDate = str.filter(e => {
   var todayInTime = new Date().getTime();
   var recordDateInTime = new Date(e.ends).getTime();
   return (recordDateInTime > todayInTime && exclude.indexOf(Number(e.id)) === -1)
})

console.log("filterDate", filterDate);

这些不是“JSON字符串”,它们是数组。谢谢@Pointy我刚刚编辑了我的问题。到目前为止你尝试了什么?@codemanic我尝试了这个:var filtered=str.filter(函数(项){return item.id!==exclude;});同样,它们不是“JSON数组”。它们是JavaScript数组。JSON是一个序列化方案。谢谢@thankyou@Thalaivar,filterDate仍然有ID为5的数据。但是应该排除它,因为它在数组中。可能在日期之前检查ID会更有效,以节省构建日期实例的工作。当然,“今天”日期也可以在函数之外生成。仍然返回{id:“5”,名称:“test1”,结束语:“2020-05-07 10:00”}非常感谢@Thalaivar@qqruza:好的,兄弟,保重安全。非常感谢Thalaivar和@QuethzelDíaz