I have two arrays keyVals and rows defined as below:
keyVals =
[
"Status",
"ErrorHeading",
"ErrorDetail"
]
rows =
[
{
"Hostname": "ABC",
"name": "Check1",
"Status": "PASS",
"ErrorHeading": "",
"ErrorDetail": ""
},
{
"Hostname": "ABC",
"name": "Check2",
"Status": "PASS",
"ErrorHeading": "",
"ErrorDetail": ""
},
{
"Hostname": "ABC",
"name": "Check3",
"Status": "FAIL",
"ErrorHeading": "Heading3",
"ErrorDetail": "ErrorDetails3"
}
]
I have written the following code to generate a Res:
function dArray(rows, keyVals) {
const response = Object.values(rows.reduce((res, {Hostname, name, ...o}) => {
res[Hostname] = res[Hostname] || {Hostname};
keyVals.forEach(kv => res[Hostname][name + kv] = o[kv]);
return res;
}, {}));
return response;
}
const Res = dArray(rows, keyVals);
The Res values looks as below:
Res =
[
{
"Hostname": "ABC",
"Check1kStatus": "PASS",
"Check1ErrorHeading": "",
"Check1ErrorDetail": "",
"Check2Status": "PASS",
"Check2ErrorHeading": "",
"Check2ErrorDetail": "",
"Check3Status": "FAIL",
"Check3ErrorHeading": "Heading3",
"Check3ErrorDetail": "ErrorDetails3"
}
]
I want to modify function dArray(rows, keyVals) such that the Res excludes all empty values as below:
Res =
[
{
"Hostname": "ABC",
"Check1kStatus": "PASS",
"Check2Status": "PASS",
"Check3Status": "FAIL",
"Check3ErrorHeading": "Heading3",
"Check3ErrorDetail": "ErrorDetails3"
}
]
keyValsandrowsare arraysif (o[kv]) { ... }