Search code examples
javascriptarraysobjectfor-in-loop

Make a new array objects using two different object in JavaScript


I have two objects. I am trying to do like :

var obj1 = {
 abc_name: "Jack", 
 abc_age: 24
}

var obj2 = {
 xyz_name: "Mike", 
 xyz_age: 22
}

Expected Output be like :

var obj = [{
 fieldName: "Name", 
 abc_name: "Jack", 
 xyz_name: "Mike"
}, 
{
 fieldName: "Age", 
 abc_age: 24, 
 xyz_age: 22
}]

I am trying with the nested for-in loop. But not getting expected results. Any better solution or idea ? Thanks in advance


Solution

  • One way to achieve this is Array.prototype.map:

    const obj1 = {
     abc_name: "Jack", 
     abc_age: 24
    }
    
    const obj2 = {
     xyz_name: "Mike", 
     xyz_age: 22
    }
    
    const obj = Object.entries(obj1).map(([k, v]) => {
      const [, fieldname1] = k.split('_');
      const [prefix2] = Object.keys(obj2)[0].split('_');
      return {
        fieldname: fieldname1[0].toUpperCase() + fieldname1.substring(1),
        [k]: v,
        [prefix2 + '_' + fieldname1]: obj2[prefix2 + '_' + fieldname1]
      }
    });
    
    console.log(obj);