Вы можете попытаться сгладить массив и уменьшить его до одного результата:
const data = [
[
[
{ result: "Passed" },
{ result: "Failed" },
{}
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Failed" },
{},
{}
]
]
];
const flatten = array =>
array.reduce(
(result,item)=>
Array.isArray(item)
? result.concat(flatten(item))
: result.concat(item),
[]
)
;
console.log(
flatten(data)
.reduce(
(result,item)=>{
if(item.result==="Passed"){
result.passed++;
}
if(item.result==="Failed"){
result.failed++;
}
return result;
},
{passed:0,failed:0}
)
);
Если вам нужен другой формат итогов, возможно, это то, что вы имели в виду:
const data = [
[
[
{ result: "Passed" },
{ result: "Failed" },
{}
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Passed" },
{ result: "Passed" },
{ result: "Failed" }
],
[
{ result: "Failed" },
{},
{}
]
]
];
const flatten = array =>
array.reduce(
(result,item)=>result.concat(item),
[]
)
;
console.log(
flatten(data)
.reduce(
(result,item)=>
result.concat(
item.reduce(
(result,item)=>{
if(item.result==="Passed"){
result.passed++;
}
if(item.result==="Failed"){
result.failed++;
}
return result;
},
{passed:0,failed:0}
)
),
[]
)
);