【发布时间】:2020-04-29 14:54:38
【问题描述】:
我有以下对象数组:
const formulas =
[
{ "formulaID": "1", "versionID": 1, "formulaClass": 3, "formulaType": "34", "outputName": "Chocolate Milk 2%" },
{ "formulaID": "4", "versionID": 1, "formulaClass": 3, "formulaType": "17", "outputName": "Hazelnut Creamer" },
{ "formulaID": "6", "versionID": 1, "formulaClass": 3, "formulaType": "23", "outputName": "White Milk 2%" }
];
const yields =
[
{ "formulaID": "4", "versionID": 1, "yieldFactor": 0.93 },
{ "formulaID": "4", "versionID": 2, "yieldFactor": 0.98 },
{ "formulaID": "6", "versionID": 1, "yieldFactor": 0.95 },
{ "formulaID": "7", "versionID": 1, "yieldFactor": 0.85 }
];
并且正在尝试以编程方式创建此输出:
const result =
[
{ "formulaID": "7", "versionID": 1, "yieldFactor": 0.85, "outputName": "" },
{ "formulaID": "4", "versionID": 1, "yieldFactor": 0.93, "outputName": "Hazelnut Creamer" },
{ "formulaID": "4", "versionID": 2, "yieldFactor": 0.98, "outputName": "" },
{ "formulaID": "6", "versionID": 1, "yieldFactor": 0.95, "outputName": "White Milk 2%" }
];
在this post的帮助下,我写了这段代码:
const result = yields.map(yld => ({
formulaID: yld.formulaID,
versionID: yld.versionID,
yieldFactor: yld.yieldFactor,
outputName: formulas.filter(f => (f.formulaID + '-' + f.versionID).includes(yld.formulaID + '-' + yld.versionID))
}));
console.log(result);
它接近预期的结果,但我不确定如何仅隔离 outputName。在其当前状态下,它给出了找到匹配项的整个数组。在原始数据数组之间不匹配的情况下,如何仅显示 outputName 匹配和空字符串 outputName?
【问题讨论】:
-
你当前的输出是多少?
-
试试:
yields.map(yld => ({...yld, outputName: (formulas.find(f => f.formulaID === yld.formulaID && f.versionID === yld.versionID) || {}).outputName}); -
@Titus - 你会考虑发布这条评论作为答案吗?
标签: javascript arrays object