Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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_Ecmascript 6 - Fatal编程技术网

基于条件JavaScript向数组添加对象

基于条件JavaScript向数组添加对象,javascript,ecmascript-6,Javascript,Ecmascript 6,我有一个for循环,它向我发送了3个对象,我需要将它们放入一个新的对象数组中 此对象每次循环3次 Time 1 0:{Room: 'Shiraz', Number: 301, Status: 0, Day: 1, Month:1, Year:2021} 1:{Room: 'Shiraz', Number: 303, Status: 1, Day: 1, Month:1, Year:2021} 2:{Room: 'Shiraz', Number: 302, Status: 1, Day: 1, M

我有一个for循环,它向我发送了3个对象,我需要将它们放入一个新的对象数组中 此对象每次循环3次

Time 1
0:{Room: 'Shiraz', Number: 301, Status: 0, Day: 1, Month:1, Year:2021}
1:{Room: 'Shiraz', Number: 303, Status: 1, Day: 1, Month:1, Year:2021}
2:{Room: 'Shiraz', Number: 302, Status: 1, Day: 1, Month:1, Year:2021}
只有当Status==1且Number不重复时,我才需要将这3个数组中的数据存储到新的对象数组中 希望新数组正好包含以下内容

0:{Room: 'Shiraz', Number: 303, Status: 1, Day: 1, Month:1, Year:2021}
1:{Room: 'Shiraz', Number: 302, Status: 1, Day: 1, Month:1, Year:2021}

日、月和年是可折旧的,因为我只需要新数组包含状态为1的每个“数字”,而不需要再次添加相同的数字

我想不出我该怎么存档这个

到目前为止,这是我的方法,但我只能避免添加包含Status=0的一行

for(i=0;i<disponibilidad.length;i++)
        {
          if(disponibilidad[i].Estatus!=0)
          {
            if(this.disponibilidad.find(k=>k.Habitacion!=disponibilidad[i].Habitacion))
            {
            this.disponibilidad.push(disponibilidad[i])
            }
          }
        }
for(i=0;ik.Habitacion!=disponibilidad[i].Habitacion))
{
this.disponibilidad.push(disponibilidad[i])
}
}
}
您可以使用
过滤器()
和一个集合来跟踪数字

注:我从编号为301、302和303的集合中得出了3个结果

const data=[{Room:'Shiraz',编号:301,状态:0,日期:1,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:1,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:1,月份:1,年份:2021},
{房间:'Shiraz',编号:301,状态:1,日期:2,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:2,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:2,月份:1,年份:2021},
{房间:'Shiraz',编号:301,状态:1,日期:3,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:3,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:3,月份:1,年份:2021}];
const nums=新集合()
const res=data.filter({Number,Status})=>{
返回(!Status | | nums.has(Number))?false:!!nums.add(Number);
})

log(res)
这显然不是最简单的方法,但它解释了一些基本逻辑。好吧,这是解决这个问题的多种方法之一

//数组
常数arr=[
[
{房间:'Shiraz',编号:301,状态:0,日期:1,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:1,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:1,月份:1,年份:2021}
],[
{房间:'Shiraz',编号:301,状态:1,日期:2,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:2,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:2,月份:1,年份:2021}
],[
{房间:'Shiraz',编号:301,状态:1,日期:3,月份:1,年份:2021},
{房间:'Shiraz',号码:303,状态:1,日期:3,月份:1,年份:2021},
{房间:'Shiraz',号码:302,状态:1,日期:3,月份:1,年份:2021},
]
];
//定义结果数组
常数res=[];
//定义黑名单数组
常数bl=[];
//定义使用的数字数组
使用的常量=[];
//数组的循环数组
对于(arr的一部分){
//对于每个数组循环,它都是
//首先定义黑名单
为了(我的a){
//若数字已在黑名单数组中,则跳过循环
如果(bl.indexOf(i.Number)!==-1)继续;
//如果状态不是1,则将编号添加到黑名单
如果(i.Status!==1)bl.push(i.Number);
}
}
//再次循环数组
对于(arr的一部分){
//然后将项目添加到结果数组中
为了(我的a){
//如果数字在黑名单数组中,跳过循环
如果(bl.indexOf(i.Number)!==-1)继续;
//如果使用了数组中的数字,则跳过循环
如果(i.Number)!==-1)继续;
//其他推送项目
res.push(i);
//并将数字添加到已使用的数组中
使用。推送(i.编号);
}  
}
//试验
控制台日志(res)
0:{Room: 'Shiraz', Number: 303, Status: 1, Day: 1, Month:1, Year:2021}
1:{Room: 'Shiraz', Number: 302, Status: 1, Day: 1, Month:1, Year:2021}

for(i=0;i<disponibilidad.length;i++)
        {
          if(disponibilidad[i].Estatus!=0)
          {
            if(this.disponibilidad.find(k=>k.Habitacion!=disponibilidad[i].Habitacion))
            {
            this.disponibilidad.push(disponibilidad[i])
            }
          }
        }