Javascript 根据不同的计时筛选小时数

Javascript 根据不同的计时筛选小时数,javascript,arrays,object,ecmascript-6,filter,Javascript,Arrays,Object,Ecmascript 6,Filter,我想要一个通用javascript函数,它应该接受一个对象数组。 每个对象都有一个hours属性,它是一个数组,可以在下面的代码中看到。 每小时显示每天的不同时间。 现在我需要过滤时间。如果周一到周二的时间(从和到)相同,则应显示:M-T:9-5PM W-T:9-9PM Sat Sun:Closed 如果周一至周五的时间相同,且在周六或周日有差异,则应显示M-F:9-5 PM和周六:9-9 PM和周日:closed 我应该返回数组中的数据,以便在UI中以以下格式显示。 它应该返回数组,但包含此数

我想要一个通用javascript函数,它应该接受一个对象数组。 每个对象都有一个hours属性,它是一个数组,可以在下面的代码中看到。 每小时显示每天的不同时间。 现在我需要过滤时间。如果周一到周二的时间(从和到)相同,则应显示:M-T:9-5PM W-T:9-9PM Sat Sun:Closed 如果周一至周五的时间相同,且在周六或周日有差异,则应显示M-F:9-5 PM和周六:9-9 PM和周日:closed

我应该返回数组中的数据,以便在UI中以以下格式显示。 它应该返回数组,但包含此数据,这样就可以在前端使用循环轻松地进行渲染

我给出了数组中的两个对象。 总的来说,我只想显示一次不同的内容。

类似这样的内容

const myHours=myData.map(项=>{
const agghurs=item.hours.reduce((aggArr,obj)=>{
const len=聚合长度;
const last=len-1;
//控制台日志(len、obj、aggArr)
如果(len==0){
聚合推送({…obj,dayStr:obj.day});
}
else if(aggArr[last].fromHour==obj.fromHour
&&aggArr[last].toHour==obj.toHour){
aggArr[last].dayStr=aggArr[last].day+“-”+obj.day;
}
否则{
聚合推送({…obj,dayStr:obj.day});
}       
返回aggArr;
}, []); 
返回{id:item.id,agghurs:agghurs.map(elem=>{
如果(元素关闭){
return{day:elem.dayStr,time:'closed'};
}
否则{
return{day:elem.dayStr,time:elem.fromHour+'-'+elem.toHour};
}
})};
});
console.log(myHours)

常量myData=[
{
“电话”:[
{
“id”:“经销商/电话/电话0?销售=部门”,
“拨号”:“8777931407”,
“区域”:“+1”,
“区号”:“877”,
“承运人”:“793”,
“订户”:“1407”,
“诺杜里”:{
“查询”:“销售=部门”,
“参数”:{
“销售”:“部门”
},
“域名”:“经销商”,
“型号名称”:“电话”,
“实例ID”:“电话\ 0”
}
}
],
“地址”:{
“街道1”:“宾夕法尼亚大道2101号”,
“street2”:空,
“城市”:“威尔明顿”,
“州”:“德”,
“国家”:“美国”,
“postalCode”:“19806”,
“纬度”:39.7578416,
“经度”:-75.5688727,
“时区”:“美国/纽约”,
“区域”:“东北”,
“县”:“新城堡”
},
“id”:“经销商/部门/销售”,
“displayName”:“预约销售”,
“名称”:“销售”,
“电子邮件”:qacobaltsanitized@hotmail.com",
“电话号码”:“8777931407”,
“小时数”:[
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期一”
},
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期二”
},
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期三”
},
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期四”
},
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期五”
},
{
“fromHour”:“09:00”,
“TOHOURE”:“17:00”,
“日”:“星期六”
},
{
“封闭”:正确,
“fromHour”:“已关闭”,
“TOHOURE”:“关闭”,
“日”:“星期日”
}
],
“运行小时数标题”:“运行小时数”,
“诺杜里”:{
“查询”:“,
“域名”:“经销商”,
“型号名称”:“部门”,
“实例ID”:“销售”
}
}
,
{
“电话”:[
{
“id”:“经销商/电话/电话0?服务=部门”,
“拨号”:“3024828359”,
“区域”:“+1”,
“区号”:“302”,
“承运人”:“482”,
“订户”:“8359”,
“诺杜里”:{
“查询”:“服务=部门”,
“参数”:{
“服务”:“部门”
},
“域名”:“经销商”,
“型号名称”:“电话”,
“实例ID”:“电话\ 0”
}
}
],
“地址”:{
“街道1”:“宾夕法尼亚大道2101号”,
“street2”:空,
“城市”:“威尔明顿”,
“州”:“德”,
“国家”:“美国”,
“postalCode”:“19806”,
“纬度”:39.7578416,
“经度”:-75.5688727,
“时区”:“美国/纽约”,
“区域”:“东北”,
“县”:“新城堡”
},
“dynamicAttr”:{
“itemprop”:“部门”,
“itemtype”:“//schema.org/AutoRepair”
},
“displayNameAttr”:{
“itemprop”:“名称”
},
“id”:“经销商/部门/服务”,
“显示名称”:“服务”,
“名称”:“服务”,
“电子邮件”:qacobaltsanitized@hotmail.com",
“电话号码”:“3024828359”,
“小时数”:[
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,
“日”:“星期一”
},
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,
“日”:“星期二”
},
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,
“日”:“星期三”
},
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,
“日”:“星期四”
},
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,
“日”:“星期五”
},
{
“fromHour”:“07:00”,
“TOHOURE”:“16:00”,