【发布时间】:2020-04-27 16:10:39
【问题描述】:
我有 3 个 JSON 对象,定义如下:
const totalData = [{ Hostname: "abc123", name: "CName-A", Status: "PASS", Heading: "Not Applicable" },
{ Hostname: "abc123", name: "CName-B", Status: "FAIL", Heading: "Not Applicable" },
{ Hostname: "abc235", name: "CName-C", Status: "FAIL", Heading: "Not Applicable" },
{ Hostname: "abc235", name: "CName-D", Status: "FAIL", Heading: "Not Applicable" }];
const otherTotalData = [{ Hostname: "abc123", name: "QName-A", Status: "PASS", Heading: "HeadingQA" },
{ Hostname: "abc123", name: "QName-B", Status: "FAIL", Heading: "HeadingQB" },
{ Hostname: "abc235", name: "QName-C", Status: "FAIL", Heading: "Not Applicable" },
{ Hostname: "abc235", name: "QName-D", Status: "FAIL", Heading: "Not Applicable" }];
const newTotalData = [{ Hostname: "abc123", name: "TName-A", Status: "PASS", Heading: "HeadingTA" },
{ Hostname: "abc123", name: "TName-B", Status: "FAIL", Heading: "HeadingTB" },
{ Hostname: "abc235", name: "TName-C", Status: "FAIL", Heading: "Not Applicable" },
{ Hostname: "abc235", name: "TName-D", Status: "FAIL", Heading: "Not Applicable" }];
我有一个使用array reduce 方法的函数:
function createArray(totalData) {
const keyValues = ["Status", "Heading"],
result = Object.values(totalData.reduce((res, { Hostname, name, ...o }) => {
res[Hostname] = res[Hostname] || { Hostname };
keyValues.forEach(k => res[Hostname][name + k] = o[k]);
return res;
}, {}));
}
现在,我正在调用这两个函数:
const Res1 = createArray(totalData);
const Res2 = createArray(otherTotalData);
const Res3 = createArray(newTotalData);
这里 Res1 有输出:
[
{
"Hostname": "abc123",
"CName-AStatus": "PASS",
"CName-BStatus": "FAIL"
},
{
"Hostname": "abc235",
"CName-CStatus": "FAIL",
"CName-DStatus": "FAIL"
}
]
而且,Res2 有输出:
[
{
"Hostname": "abc123",
"QName-AStatus": "PASS",
"QName-BStatus": "FAIL"
},
{
"Hostname": "abc235",
"QName-CStatus": "FAIL",
"QName-DStatus": "FAIL"
}
]
而且,Res3 有输出:
[
{
"Hostname": "abc123",
"TName-AStatus": "PASS",
"TName-BStatus": "FAIL"
},
{
"Hostname": "abc235",
"TName-CStatus": "FAIL",
"TName-DStatus": "FAIL"
}
]
我想组合 Res1、Res2 和 Res3,使最终的 Json 对象如下所示:
[
{
"Hostname": "abc123",
"CName-AStatus": "PASS",
"CName-BStatus": "FAIL",
"QName-AStatus": "PASS",
"QName-BStatus": "FAIL",
"TName-AStatus": "PASS",
"TName-BStatus": "FAIL"
},
{
"Hostname": "abc235",
"CName-CStatus": "FAIL",
"CName-DStatus": "FAIL",
"QName-CStatus": "FAIL",
"QName-DStatus": "FAIL",
"TName-CStatus": "FAIL",
"TName-DStatus": "FAIL"
}
]
如何组合Res1 Res2 和Res3?
【问题讨论】:
标签: javascript arrays node.js performance mapreduce