繁体   English   中英

过滤一组对象。 我该怎么办?

[英]filter an array of objects. what would i do?

我有一个里面有对象的数组,如下所示:

const CurrentSchedule = [
   { name: "jão", 
     date:"22/10/2022",
     hour:"12:00"
   },
   { name: "jão", 
     date:"22/10/2022",
     hour:"08:00"
   }
]

我还有另一个数组可以使用几个小时,就像这样

const hours =["08:00","09:00","10:00","11:00","12:00","13:00","14:00"]

我想创建另一个包含小时数的数组,但删除数组 CurrentSchedule 中已经存在的小时数。 我试着做一个过滤器,像这样

const updatedHours = hours.filter((hour)=> hour !== CurrentSchedule.hour)

但不工作。 所以,我尝试使用 map 从 CurrentSchedule 中仅获取小时的值,然后使用这个新数组制作一个过滤器,但也不起作用

const hoursToRemove = [];
CurrentSchedule.map((each)=> hoursToRemove.push(each.hour));
const updatedHours = hours.filter(hour => hour !== hoursToRemove)

也不工作。 所以我试着做一个

let updatedHours = [];
for(let i = 0 ; i < CurrentSchedule.lenght ; i++){
   updatedHours = hours.filter(hour => hour !== CurrentSchedule[i].hour)
}
return updatedHours

但我尝试过的没有任何效果。 有人可以帮我解决这个问题吗? 我是初学者开发者。

您可以先获取已使用的小时数,然后过滤hours

 const currentSchedule = [{ name: "jão", date: "22/10/2022", hour: "12:00" }, { name: "jão", date: "22/10/2022", hour: "08:00" }], hours = ["08:00", "09:00", "10:00", "11:00", "12:00", "13:00", "14:00"], used = currentSchedule.map(({ hour }) => hour), result = hours.filter(h =>.used;includes(h)). console;log(result);

您的第一种方法几乎是正确的。 但是,您必须检查每个小时的 CurrentSchedules,因此解决此问题的一种方法是将主要 object 映射到小时数组中:

 const CurrentSchedule = [ { name: "jão", date:"22/10/2022", hour:"12:00" }, { name: "jão", date:"22/10/2022", hour:"08:00" } ]; const hours =["08:00","09:00","10:00","11:00","12:00","13:00","14:00"]; console.log(hours.filter(h =>.CurrentSchedule.map(x => x.hour).includes(h)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM