Перебор объекта, который содержит массивы объектов

#javascript #reactjs

#javascript #reactjs

Вопрос:

Необходимо выполнить цикл через объект, который содержит два или более объектов, каждый из которых имеет один или несколько массивов объектов.

Цель состоит в том, чтобы перебрать каждый из этих массивов и на основе timeNeededForMakingAssignment возврата этого объекта в новый массив.

Вот как выглядит структура объектов: введите описание изображения здесь

вот как этот объект выглядит через json:

 TABLE DATA: {  
   "COMP_01":{  
      "prop":[  
         {  

            "timeNeededForMakingAssignment":"24",
            "timeReceived":"12:00",
            "username":"lneumann@churchmutual.com",

         },
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "username":"lneumann@churchmutual.com",

         },
         {  
            "timeNeededForMakingAssignment":"19",
            "timeReceived":"12:00",
            "username":"asinger@churchmutual.com",
         }
      ],
      "wc":[  
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"lneumann@churchmutual.com",
         },
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"lneumann@churchmutual.com",
         },
         {  
            "timeNeededForMakingAssignment":"24",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"asinger@churchmutual.com",
         }
      ],
      "lb":[  
         {  

            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
         },
         {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
          {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
      ],
       "auto":[  
         {  

            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
         },
         {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
          {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
      ],
    }
    "COMP_02": {  
      "prop":[  
         {  

            "timeNeededForMakingAssignment":"24",
            "timeReceived":"12:00",
            "username":"lneumann@churchmutual.com",

         },
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "username":"lneumann@churchmutual.com",

         },
         {  
            "timeNeededForMakingAssignment":"19",
            "timeReceived":"12:00",
            "username":"asinger@churchmutual.com",
         }
      ],
      "wc":[  
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"lneumann@churchmutual.com",
         },
         {  
            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"lneumann@churchmutual.com",
         },
         {  
            "timeNeededForMakingAssignment":"24",
            "timeReceived":"12:00",
            "tpaRequired":false,
            "username":"asinger@churchmutual.com",
         }
      ],
      "lb":[  
         {  

            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
         },
         {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
          {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
      ],
       "auto":[  
         {  

            "timeNeededForMakingAssignment":"23",
            "timeReceived":"12:00",
         },
         {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
          {  
            "timeNeededForMakingAssignment":"22",
            "timeReceived":"12:00",
         },
      ],
    }
}
  

Как выполнить цикл по этому объекту и вернуть свойство pn на основе объекта timeNeededForMakingAssignment ?

Ответ №1:

Я не знаю, хорошо ли я понял ваш запрос, но я думаю, что это может быть что-то вроде этого:

 var comp=tableData.COMP_01;
var prop=comp.prop;
prop.forEach(function(e){
    if(e.timeNeededForMakingAssignement==="25"){
        //Do your stuff here
    }
});

//Repeat for COMP_02
  

Я также думаю, что вы должны установить это значение как int, а не как string

Комментарии:

1. ПРИВЕТ @Bibimission Я думаю, что ваша логика хороша, но я получаю сообщение об ошибке forEach: «Неперехваченная ошибка типа: tableData.forEach не является функцией»

2. Вероятно, мне нужно что-то вроде forEach, которое может выполнять цикл через объект, верно?

3. Ну, я думал, что tableData — это массив, но это не так. Вы не можете выполнить итерацию с вашим comp_01 comp_02.

4. Может быть, я могу преобразовать этот объект в массив, а затем использовать вашу логику?