function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
user10286user10286 

Dynamically merge two objects

I want to merge objects dynamically. I have tried it but I didn't get the expected result
let result = [
    {
        Month: 7,
        OLIQU: 10,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity1",
        ProductName: "Product1"
    },
    {
        Month: 8,
        OLIQU: 30,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity1",
        ProductName: "Product1"
    },
    {
        Month: 9,
        OLIQU: 40,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity1",
        ProductName: "Product1"
    },
    {
        Month: 10,
        OLIQU: 50,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity1",
        ProductName: "Product1"
    },
    {
        Month: 7,
        OLIQU: 20,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity2",
        ProductName: "Product1"
    },
    {
        Month: 8,
        OLIQU: 40,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity2",
        ProductName: "Product1"
    },
    {
        Month: 9,
        OLIQU: 60,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity2",
        ProductName: "Product1"
    },
    {
        Month: 10,
        OLIQU: 80,
        Year: 2018,
        AccountName: "Account1",         
        OpportunityName: "Opportunity2",
        ProductName: "Product1"
    },

];


let reportData = [];
// console.log(reportData);
let resultArray = [];
for(let key in result){                    
    if(result.hasOwnProperty(key)){
        let obj = {}; 
        obj.MName=result[key].AccountName;
        obj.POpp=result[key].OpportunityName;
        obj.PName=result[key].ProductName;
        if(result[key].Month===7){
            obj.July=result[key].OLIQU;
        }                        
        if(result[key].Month===8){
            obj.Aug=result[key].OLIQU;
        }
        if(result[key].Month===9){
            obj.Sep=result[key].OLIQU;
        }
        if(result[key].Month===10){
            obj.Oct=result[key].OLIQU;
        }
        reportData.push(obj);  
        let val = Object.assign.apply(Object, reportData.concat(obj));
        // resultArray.push(Object.assign.apply(Object, reportData.concat(obj)));
        resultArray.push(val);
    }
}

console.log(resultArray);  
I got this output with 8 times
Output:
[
    {
        Aug: 40
        July: 20
        MName: "Account1"
        Oct: 80
        PName: "Product1"
        POpp: "Opportunity2"
        Sep: 60
    },
    {
        Aug: 40
        July: 20
        MName: "Account1"
        Oct: 80
        PName: "Product1"
        POpp: "Opportunity2"
        Sep: 60
    },


]

my expected output is 

[
    {
        MName: "Account1",       
        POpp: "Opportunity1",
        PName: "Product1",
        July:10,
        Aug:30,
        Sep:40,
        Oct:50
    },
    {
        MName: "Account1",       
        POpp: "Opportunity2",
        PName: "Product1",
        July:20,
        Aug:40,
        Sep:60,
        Oct:80
    },
]