Javascript 如何格式化neasted json数组取决于api的json请求条件

Javascript 如何格式化neasted json数组取决于api的json请求条件,javascript,jquery,arrays,json,angular4-forms,Javascript,Jquery,Arrays,Json,Angular4 Forms,如何格式化neasted json数组取决于我对api请求json的条件 这是我的前端json数组 我使用角度反应形式创建了这个数组 但Api需要的不仅仅是空字段 在上面的数组中嵌套了天->计时->中断 条件 1) 如果天数不包含计时,则无需提交sumbit(例如:第3天不包含计时,因此无需提交) 2) 如果街区、楼层、房间都是空的,则无需高峰会议(例如:第[1]天-计时[1],计时[2],第[2]天-计时[2]) 3) 如果中断为空,则不需要在天内提交中断数组(例如:day1[1]->timi

如何格式化neasted json数组取决于我对api请求json的条件

这是我的前端json数组 我使用角度反应形式创建了这个数组

但Api需要的不仅仅是空字段

在上面的数组中嵌套了天->计时->中断

条件

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

2) 如果街区、楼层、房间都是空的,则无需高峰会议(例如:第[1]天-计时[1],计时[2],第[2]天-计时[2])

3) 如果中断为空,则不需要在天内提交中断数组(例如:day1[1]->timings[3],day[2]->timings[2])

四,

)在breks中,如果模式为真(持续时间、数量),如果模式为真 (需要开始时间和结束时间。)

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;
}
函数processData(数据){
var newData={};
newData.start\u date=data.startDate;
newData.end_date=data.endDate;
newData.day=[];
对于(变量i=0;i0){
var currentBreaks=[];
对于(var k=0;k
我已将解决方案签出,但我不了解请求阵列中的分支id。

(已更新) 这就是我想出的解决办法

  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;
}
函数processData(数据){
var newData={};
newData.start\u date=data.startDate;
newData.end_date=data.endDate;
newData.day=[];
对于(变量i=0;i0){
var currentBreaks=[];
对于(var k=0;k

我正在签出解决方案,但我不了解请求数组中的分支id。

您的r解决方案几乎正常工作,我无法直接添加数组。有一些条件,请您检查上面编辑的问题,更正函数以匹配您请求的数组。您的r解决方案几乎正常工作,中断数组我无法直接添加有一些条件,请检查上面编辑的函数以匹配您请求的数组。