# How to merge two objects in JavaScript

> Learn how to merge two JavaScript objects into a new one with the spread operator, where later properties win, or do a deep merge with the Lodash merge().

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2018-11-30 | Updated: 2019-06-05 | Topics: [JavaScript](https://flaviocopes.com/tags/js/) | Canonical: https://flaviocopes.com/how-to-merge-objects-javascript/

[ES6](https://flaviocopes.com/es6/) in 2015 introduced the [**spread operator**](https://flaviocopes.com/javascript-spread-operator/), which is the perfect way to merge two simple objects into one:

```js
const object1 = {
  name: 'Flavio'
}

const object2 = {
  age: 35
}

const object3 = {...object1, ...object2 }
```

If both objects have a property with the same name, then the second object property overwrites the first.

The best solution in this case is to use Lodash and its [`merge()` method](https://www.npmjs.com/package/lodash.merge), which will perform a deeper merge, recursively merging object properties and arrays.

[See the documentation for it on the Lodash docs](https://lodash.com/docs/4.17.11#merge).
