I have two objects, where the second object key is a property of the first (projectID);
**OBJ1**
[0: { projectID: 1234, prop1: "apple", prop2: "banana", prop3: "choc"},
1: { projectID: 8765, prop1: "apple", prop2: "banana", prop3: "choc"}]
**OBJ2**
[1234: {prop1: "gen", prop2: "home", prop3: "home"},
8765:{prop1 :"gone", prop2:"done", prop3: "say"}]
I have a function for filtering
Object.keys(OBJ2).forEach( s => OBJ1.filter(d => d.projectID === s)
I tried reduce to map the two objects but was unsuccessful. The wanted result is :
Desired Result :
0: {projectID: 1234, prop1: ["apple","gen"], prop2:["banana","home"], prop3:["choc","home"],
1:{propjectID:8765, prop1:["apple","gone"], prop2:["banan","done"], prop3:["choc","say"]
Any help much appreciated!
Your JSON objects are wrong I have corrected the JSON object assuming that it is your desire Refer the code for the corrected JSON :
function mergeObjects(originalArray, additionalData) {
return originalArray.map(item => {
const projectId = item.projectID;
const additionalProps = additionalData[projectId];
return {
projectID: projectId,
prop1: [item.prop1, additionalProps.prop1],
prop2: [item.prop2, additionalProps.prop2],
prop3: [item.prop3, additionalProps.prop3],
};
});
}
// Corrected JSON objects
const originalArray = [
{
"projectID": 1234,
"prop1": "apple",
"prop2": "banana",
"prop3": "choc"
},
{
"projectID": 8765,
"prop1": "apple",
"prop2": "banana",
"prop3": "choc"
}
];
// Corrected object two
const additionalData = {
"1234": {
"prop1": "gen",
"prop2": "home",
"prop3": "home"
},
"8765": {
"prop1": "gone",
"prop2": "done",
"prop3": "say"
}
};
const result = mergeObjects(originalArray, additionalData);
console.log(JSON.stringify(result));