gpt4 book ai didi

javascript - 如何格式化嵌套 json 数组取决于 api 请求 json 的条件

转载 作者:行者123 更新时间:2023-12-01 02:03:54 25 4
gpt4 key购买 nike

如何格式化嵌套的 json 数组取决于我有 api 的表单请求 json 的条件

这是我的前端 json 数组我使用 Angular react 形式创建了这个数组

但是 Api 需要需要,而不仅仅是空字段

上面的数组是嵌套的 days->timings->breaks

条件

1) 如果天数不包含计时,则无需提交(例如:第 3 天不包含计时,因此无需提交)

2) 如果街区、楼层、房间都是空的,则无需登顶(例如:day[1]-timing[1]、timing[2]、day[2]-timing[2])

3) 如果休息时间为空,则无需在几天内提交休息时间数组(例如:day1[1]->timings[3]、day[2]->timings[2])

4

) in breks if mode is true (duration, quantity), if mode is true (start time, end times are required

5) api不需要嵌套(只需要普通数组)(例如:[{}, {}, {}])

通过满足上述条件,你可以假设这个数组

我尝试使用for循环来解决它,但它重复了不太好的事情

前端数组

    {  
"startDate":"10-05-2018",
"endDate":"13-05-2018",
"days":[
{
"dayId":1,
"timings":[
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":1,
"floors":2,
"rooms":3,
"breaks":[
{
"type":1,
"mode":false,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
},
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[
{
"type":1,
"mode":false,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[

]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":2,
"floors":3,
"rooms":3,
"breaks":[

]
}
]
},
{
"dayId":2,
"timings":[
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":1,
"floors":2,
"rooms":3,
"breaks":[
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",
"duration":1,
"quantity":1
}
]
},
{
"startTime":"10:00",
"endTime":"12:00",
"cycle":1,
"blocks":"",
"floors":"",
"rooms":"",
"breaks":[

]
}
]
},
{
"dayId":3,
"timings":[

]
}
]
}

请求的数组

    {  
"start_date":"05-05-2018",
"end_date":"31-07-2018",
"branch_id":"2",
"day":[
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":false,

"duration":1,
"quantity":1
},
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",

}
],
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":false,

"duration":1,
"quantity":1
}
],
"gen_repeat_cycle_id":"2"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1"
},
{
"id":"1",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"2",
"start_time":"10:00",
"end_time":"12:00",
"breaks":[
{
"type":1,
"mode":true,
"startTime":"01:00",
"endTime":"02:00",

}
],
"gen_repeat_cycle_id":"1",
"room_id":"1",
"floor_id":"2",
"block_id":"3"
},
{
"id":"2",
"start_time":"10:00",
"end_time":"12:00",
"gen_repeat_cycle_id":"1"
}
]
}

请帮助我

最佳答案

(已更新)这是我想出的解决方案

  function processData(data) {
var newData = {};
newData.start_date = data.startDate;
newData.end_date = data.endDate;
newData.day = [];

for(var i = 0; i < data.days.length; i++) {
var currentDay = data.days[i];
for(var j = 0; j < currentDay.timings.length; j++) {
var currentTiming = currentDay.timings[j];
var newTimingObject = {};
newTimingObject.start_time = currentTiming.startTime;
newTimingObject.end_time = currentTiming.endTime;
newTimingObject.gen_repeat_cycle_id = currentTiming.cycle.toString();
newTimingObject.id = currentDay.dayId.toString();

if(currentTiming.breaks.length > 0) {
var currentBreaks = [];
for(var k = 0; k < currentTiming.breaks.length; k++) {
var newBreakObject = {};
newBreakObject.type = currentTiming.breaks[k].type;
newBreakObject.mode = currentTiming.breaks[k].mode;
if(currentTiming.breaks[k].mode === true) {
newBreakObject.startTime = currentTiming.breaks[k].startTime;
newBreakObject.endTime = currentTiming.breaks[k].endTime;
} else {
newBreakObject.duration = currentTiming.breaks[k].duration;
newBreakObject.quantity = currentTiming.breaks[k].quantity;
}
currentBreaks.push(newBreakObject);
}

newTimingObject.breaks = currentBreaks;
}

if(currentTiming.blocks !== '') {
newTimingObject.block_id = currentTiming.blocks.toString();
}

if(currentTiming.floors !== '') {
newTimingObject.floor_id = currentTiming.floors.toString();
}

if(currentTiming.rooms !== '') {
newTimingObject.room_id = currentTiming.rooms.toString();
}

newData.day.push(newTimingObject);
}
}

return newData;
}

我在jsfiddle中有解决方案检查一下,我不明白请求数组中的branch_id。

关于javascript - 如何格式化嵌套 json 数组取决于 api 请求 json 的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50274711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com