Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何迭代列表中的对象、对象中的列表以及列表中的对象_Javascript_Node.js - Fatal编程技术网

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.

我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象

所以请帮我做这个

预期产量

我如何迭代这个

我有像09:00am到09:00pm这样的时间段,根据今天的日期,我需要迭代对象列表,并分别删除nodejs、javascript中的前一个日期对象

所以请帮我做这个


从下面的评论中
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()
        })
    }
})