У меня есть следующие массивы объектов:
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%" }
];
С помощью этот пост Я написал этот код:
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
, где нет совпадения между исходными массивами исходных данных?
Правка - Текущий вывод выглядит как это: