Javascript 如何迭代列表中的对象、对象中的列表以及列表中的对象
我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象 所以请帮我做这个 预期产量 我如何迭代这个 我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象 所以请帮我做这个Javascript 如何迭代列表中的对象、对象中的列表以及列表中的对象,javascript,node.js,Javascript,Node.js,我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象 所以请帮我做这个 预期产量 我如何迭代这个 我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象 所以请帮我做这个 从下面的评论中 timeslot.time.forEach(函数(值){ console.log(value.time); value.
从下面的评论中
timeslot.time.forEach(函数(值){
console.log(value.time);
value.details.forEach(函数(模型){
console.log(value.details);
value.date.forEach(函数(日期){
console.log(value.date)
})
});
});
对于(var i=0;i-1)插槽拼接(idx,1);
}, 0);
我查看了您的代码,发现有几处不正确,可以改进
var date ="23/12/2019"
var timeslots = [
{
"details": [
{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/26"
}],
"time": "10:30 AM",
"status": "Booked"
},
{
"details": [{
"name":"naveen",
"email":"naveeni@gmail.com",
"date":"2019/12/26"
},{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/26"
}],
"time": "11:30 AM",
"status": "Booked"
},
{
"details": [{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/23"
}],
"time": "12:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "02:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "03:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "04:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "05:30 PM",
"status": "Booked"
}
]
我们map
将时隙
映射到一个新对象,使用spread操作符跨对象复制现有的项目
然后,我们通过在对象声明的下面使用数组的过滤版本覆盖details属性
我们根据解析的日期字符串的
getTime
结果进行过滤getTime
返回Date
对象的历元时间戳。这使我们的比较更容易,因为它们只是数字。如果我理解正确,您可以这样考虑您的问题:(1)您希望删除所有早于特定日期的详细信息,以及(2)然后您希望删除所有没有任何详细信息的时间段
考虑使用。它的强大的数据处理,一旦你把你的头围绕它。以下是您如何使用it解决问题的方法:
//const objectScan=require('object-scan');
常量修剪=(日期,输入)=>{
const jsDate=新日期(日期);
常量逻辑={
'[*].details':(value)=>value.length==0,
'[*].details[*].date':(值)=>jsDate>newdate(值)
};
返回objectScan(对象键(逻辑){
rtn:‘bool’,
filterFn:({matchedBy,value,gparent,gproperty})=>{
if(matchedBy.some((n)=>逻辑[n](值))){
gparent.拼接(gproperty,1);
返回true;
}
返回false;
}
})(输入);
};
常量时隙=[{详细信息:[{名称:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'}],时间:'10:30 AM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'}],时间:'11:30 AM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/23'}],时间:'12:30 PM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'navee@gmail.com,日期:'2019/12/16'}],时间:'02:30 PM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'}],时间:'03:30 PM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveeni@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'}],时间:'04:30 PM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/16'}],时间:'05:30 PM',状态:'Booked'}];
log(prune('2019/12/23',时隙));//返回所做的真实iff更改
//=>正确
控制台日志(时隙);
//=>[{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'}],时间:'10:30 AM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'},{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/26'}],时间:'11:30 AM',状态:'Booked'},{详细信息:[{姓名:'naveen',电子邮件:'naveen@gmail.com,日期:'2019/12/23',时间:'12:30 PM',状态:'Booked'}]
。作为控制台包装{最大高度:100%!重要;顶部:0}
你有没有代码显示你到目前为止所做的尝试?时隙.time.forEach(函数(值){
`console.log(值.time);`value.details.forEach(函数(模型){`console.log(值.details);`value.date.forEach(函数(日期){`console.log(值.date)`}});``};`for(var i=0;我尝试了这个two@CameronDownerI真的很感激you@Cameron唐纳,我会改正我的错误,我会遵守你的准则
var date ="23/12/2019"
var timeslots = [
{
"details": [
{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/26"
}],
"time": "10:30 AM",
"status": "Booked"
},
{
"details": [{
"name":"naveen",
"email":"naveeni@gmail.com",
"date":"2019/12/26"
},{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/26"
}],
"time": "11:30 AM",
"status": "Booked"
},
{
"details": [{
"name":"naveen",
"email":"naveen@gmail.com",
"date":"2019/12/23"
}],
"time": "12:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "02:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "03:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "04:30 PM",
"status": "Booked"
},
{
"details": [],
"time": "05:30 PM",
"status": "Booked"
}
]
var date ="23/12/2019" // string needs to be "2019/12/23" to be parsed by 'Date'
for (var i = 0; i < timeslots.length; i++) { // can be replaced with map
if (timeslots[i].details[i].date < today) { // this is comparing strings, not dates
list.push(timeslots[i].details[i].date) // can be replaced by filter on details
}
}
const today = "2019/12/23";
const timeslots = [...]
const answer = timeslots.map(timeSlot => {
return {
...timeSlot, // this is called the spread operator
details: timeSlot.details.filter(detail => {
return new Date(detail.date).getTime() >= new Date(today).getTime()
})
}
})