Javascript 我有json格式的时隙,并希望在适当的时间转换为书面描述

Javascript 我有json格式的时隙,并希望在适当的时间转换为书面描述,javascript,json,node.js,Javascript,Json,Node.js,我从nodejs获得了以下JSON输出,如下所示: `{ "data": { "2018-08-21": [ { "available_slots": [ { "slots": "1.15" }, { "slots": "2:45,3:45" }, { "slots": "4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30" } ] } ] } }` 我希望使用

我从nodejs获得了以下JSON输出,如下所示:

`{
  "data": {
    "2018-08-21": [ 
    { "available_slots": [ 
       { "slots": "1.15" },
       { "slots": "2:45,3:45" },
       { "slots": "4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30" }
       ] 
    }
    ]
  }
}`
我希望使用nodejs获得以下输出:

`{ "available_slots": 
  [ { 
    "slot1": "2:45-3:45",
    "slot2": "4:30-5:30",
    "slot3": "5:30-6:30",
    "slot4": "6:30-7:30" } 
    ]
}`
我编写了下面的函数来检索上述输出,但它只提供一个插槽数据

功能分区到插槽(插槽){
var mainSlots={
“可用_插槽”:
[ 
{“slot1”:“slot2”:“slot3”:“slot4”:
} ] 
};
var i=1;
插槽.可用的\u插槽.forEach(功能(插槽){
var电源=插槽。插槽;
if(mainS.indexOf(',')>-1){
市电=市电分流(',');
var newMain;
如果(i==1){
新干线=干线[0]+“-”+干线[1];
mainSlots.available_slots[0]。slot1=newMain;
}
i++;
}
});
返回主插槽;
}

划分为地块(插槽)
您可能希望:

功能分区到插槽(插槽){
var主插槽={
“可用_插槽”:[{
“slot1”:“,
“slot2”:“,
“slot3”:“,
“slot4”:”
}]
};
设i=1;
插槽.可用的\u插槽.forEach(功能(插槽){
var电源=插槽。插槽;
if(mainS.indexOf(',')>-1&&mainSlots.available_slots[0].hasOwnProperty('slot'+i)){
var newSlots=mainS.replace(/(\d+:\d+),(\d+:\d+)/g,“$1-$2”)
新闻组=新闻组。拆分(“,”);
如果(newSlots.length>1){
新闻地段.forEach(e=>{
如果(!mainSlots.available_slots[0].hasOwnProperty(“slot”+i))
返回;
主插槽。可用的\u插槽[0][“插槽”+i]=e;
i++;
});
}否则{
mainSlots.available_slots[0][“slot”+i]=新闻组[0];
我++
}
}
});
返回主插槽;
}
控制台日志(分为多个部分)({
“可用_插槽”:[{
“插槽”:“1:15”
},
{
“插槽”:“2:45,3:45”
},
{
“插槽”:“4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30”
}
]

}));您可能希望:

功能分区到插槽(插槽){
var主插槽={
“可用_插槽”:[{
“slot1”:“,
“slot2”:“,
“slot3”:“,
“slot4”:”
}]
};
设i=1;
插槽.可用的\u插槽.forEach(功能(插槽){
var电源=插槽。插槽;
if(mainS.indexOf(',')>-1&&mainSlots.available_slots[0].hasOwnProperty('slot'+i)){
var newSlots=mainS.replace(/(\d+:\d+),(\d+:\d+)/g,“$1-$2”)
新闻组=新闻组。拆分(“,”);
如果(newSlots.length>1){
新闻地段.forEach(e=>{
如果(!mainSlots.available_slots[0].hasOwnProperty(“slot”+i))
返回;
主插槽。可用的\u插槽[0][“插槽”+i]=e;
i++;
});
}否则{
mainSlots.available_slots[0][“slot”+i]=新闻组[0];
我++
}
}
});
返回主插槽;
}
控制台日志(分为多个部分)({
“可用_插槽”:[{
“插槽”:“1:15”
},
{
“插槽”:“2:45,3:45”
},
{
“插槽”:“4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30”
}
]

}));您可以使用
reduce
对数据进行汇总。使用
forEach
在阵列中循环

var data={“data”:{“2018-08-21”:[{“可用”插槽:[{“插槽”:“1.15”},{“插槽”:“2:45,3:45”},{“插槽”:“4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30”}
功能分区到插槽(插槽){
var mainSlots={“可用的_插槽”:[]};
var s=插槽。可用的\u插槽。减少((c,v)=>{
v、 slots.split(',').forEach((o,i,a)=>{
如果(c.length<4&&a[i+1])c.push(o+“-”+a[i+1]);
});
返回c;
}reduce((c,v,i)=>Object.assign(c,{[“slot”+(i+1)]:v}),{});
主插槽。可用的\u插槽。推送;
返回主插槽;
}
var结果=分割成批次(数据。数据['2018-08-21'][0])

控制台日志(结果)您可以使用
reduce
对数据进行汇总。使用
forEach
在阵列中循环

var data={“data”:{“2018-08-21”:[{“可用”插槽:[{“插槽”:“1.15”},{“插槽”:“2:45,3:45”},{“插槽”:“4:30,5:30,6:30,7:30,8:30,9:30,10:30,11:30”}
功能分区到插槽(插槽){
var mainSlots={“可用的_插槽”:[]};
var s=插槽。可用的\u插槽。减少((c,v)=>{
v、 slots.split(',').forEach((o,i,a)=>{
如果(c.length<4&&a[i+1])c.push(o+“-”+a[i+1]);
});
返回c;
}reduce((c,v,i)=>Object.assign(c,{[“slot”+(i+1)]:v}),{});
主插槽。可用的\u插槽。推送;
返回主插槽;
}
var结果=分割成批次(数据。数据['2018-08-21'][0])

控制台日志(结果)我只需要4个插槽,而不是其他插槽,因为如图所示,我将从主插槽获得1到4个插槽。如果有其他时隙,我想跳过它们。我只需要4个时隙,而不是其他,因为如图所示,输出1到4个时隙,我将从主时隙获得。如果还有其他时隙,我想跳过它们。不,我不想要这个输出,谢谢你的努力@ya.ymerwhat you want?{“available_slot”:[{“slot1”:“2:45-3:45”,“slot2”:“4:30-5:30”,“slot3”:“5:30-6:30”,“slot4”:“6:30-7:30”}我想要这个输出@ya.ymer8:30-8:30和10:30-10:30必须被删除?在4个插槽中,然后添加它们,其他将被删除。不,我不想要这个输出,谢谢你的努力@ya.ymerwhat你想要什么?{“可用的”插槽:[{“slot1”:“2:45-3:45”,“slot2”:“4:30-5:30”,“slot3”:“5:30-6:30”,“slot4”:“6:30-7:30”}我想要这个输出@ya.ymer8:30-8:30和10:30-10:30必须被删除?在4个插槽中,然后添加它们,其他的将被删除。做得好,谢谢@EddieHappy帮助:)做得好,谢谢@EddieHappy帮助:)