Search code examples
javascriptarraysjsonobjectdestructure

How to merge two array of object into one array of object based on key?


i'm trying to merge two array of object based on key. two array of object like this,

    let array1 = [
    {
      name: "Deepak",
      age: 20
    },
    {
      name: "John",
      age: 30
    }
    ]
    let array2 = [
    {
      name: "Deepak",
      favGame: "Cricket"
    },
    {
      name: "John",
      favGame: "Football"
    },
    {
      name: "Kailash",
      favGame: "Basketball"
    }
   ]

I found difficulties to merge as expected format. I expecting format like this

   let finalArray = [
    {
        name: "Deepak",
        age: 20,
        favGame: "Cricket"
      },
      {
        name: "John",
        age: 30,
        favGame: "Football"
      },
      {
        name: "Kailash",
        favGame: "Basketball"
      }
    ]

Solution

  • Using Array.map() and Array.find() can do it

    let array1 = [
        {
          name: "Deepak",
          age: 20
        },
        {
          name: "John",
          age: 30
        }
        ]
    
    let array2 = [
        {
          name: "Deepak",
          favGame: "Cricket"
        },
        {
          name: "John",
          favGame: "Football"
        },
        {
          name: "Kailash",
          favGame: "Basketball"
        }
       ]
       
    let result = array2.map(a => {
       let obj = array1.find(i => i.name === a.name)
       if(obj){
        a.age = obj.age
       }
       return a
    })
    console.log(result)