#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. Может быть, я могу преобразовать этот объект в массив, а затем использовать вашу логику?