Это хороший вопрос, на самом деле, если я правильно понял вопрос, вы ищете, если timerTask.statusTask имеет значение 'done' для обоих двух объектов, он меняет statusRec на 'done' одного и того же объекта, чтобы вы моглидостичь такого подхода с помощью метода массива фильтра в JavaScript, вот пример:
let array = [
{
"persistenceId": 322,
"persistenceId_string": "322",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 1",
"timerTask": [
{
"persistenceId": 508,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
},
{
"persistenceId": 511,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
}
],
"statusRec": "In process"
},
{
"persistenceId": 323,
"persistenceId_string": "323",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 2",
"timerTask": [
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "decline",
"declineReason": ""
},
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "done",
"declineReason": ""
}
],
"statusRec": "In process"
}
]
function TheSameInAllObjects(status) {
if (!(status && status.length)) return true; // If there is no status, or if it is empty, they are all the same, aren't they?
let compare = status[0].statusTask;
return status.every( item => item.statusTask === compare);
}
array.filter(data => {
let obj = {}
data['timerTask'].filter(result => {
if(result.statusTask === 'done'){
obj = data
if(TheSameInAllObjects(obj['timerTask']) === true){
return data.statusRec = 'done'
}
}
})
})
console.log(array)
, и вы можете проверить, что оба имеют одно и то же значение 'done'
let array = [
{
"persistenceId": 322,
"persistenceId_string": "322",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 1",
"timerTask": [
{
"persistenceId": 508,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
},
{
"persistenceId": 511,
"persistenceId_string": "508",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task1",
"startdate": "2019-02-13",
"enddate": "2019-02-13",
"statusTask": "decline",
"declineReason": ""
}
],
"statusRec": "In process"
},
{
"persistenceId": 323,
"persistenceId_string": "323",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"recommandation": "Recommandation 2",
"timerTask": [
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "done",
"declineReason": ""
},
{
"persistenceId": 509,
"persistenceId_string": "509",
"persistenceVersion": 0,
"persistenceVersion_string": "0",
"title": "Task2",
"startdate": "2019-02-13",
"enddate": "2019-03-02",
"statusTask": "done",
"declineReason": ""
}
],
"statusRec": "In process"
}
]
function TheSameInAllObjects(status) {
if (!(status && status.length)) return true; // If there is no status, or if it is empty, they are all the same, aren't they?
let compare = status[0].statusTask;
return status.every( item => item.statusTask === compare);
}
array.filter(data => {
let obj = {}
data['timerTask'].filter(result => {
if(result.statusTask === 'done'){
obj = data
if(TheSameInAllObjects(obj['timerTask']) === true){
return data.statusRec = 'done'
}
}
})
})
console.log(array)
Я обновил свой ответ для достижения вашей цели