Fusionner deux objects avec ES6

Je suis sûr que cette question a déjà été posée mais je ne trouve pas très bien la réponse que je cherche, alors voici:

J’ai deux objects, comme suit:

const response = { lat: -51.3303, lng: 0.39440 } let item = { id: 'qwenhee-9763ae-lenfya', address: '14-22 Elder St, London, E1 6BT, UK' } 

Je dois les fusionner pour former ceci:

 item = { id: 'qwenhee-9763ae-lenfya', address: '14-22 Elder St, London, E1 6BT, UK', location: { lat: -51.3303, lng: 0.39440 } } 

Je sais que je pourrais le faire comme ça:

 item.location = {} item.location.lat = response.lat item.location.lng = response.lng 

Cependant, j’estime que ce n’est plus le meilleur moyen de le faire, car ES6 a introduit les fonctions de déstructuration / d’affectation géniales; J’ai essayé de fusionner des objects en profondeur, mais ce n’est malheureusement pas supporté 🙁 J’ai également regardé à travers des fonctions de ramda mais je ne pouvais rien voir qui était applicable.

Alors, quelle est la meilleure façon de fusionner ces deux objects en utilisant ES6?

Vous pouvez utiliser Object.assign() pour les fusionner dans un nouvel object:

 const response = { lat: -51.3303, lng: 0.39440 } const item = { id: 'qwenhee-9763ae-lenfya', address: '14-22 Elder St, London, E1 6BT, UK' } const newItem = Object.assign({}, item, { location: response }); console.log(newItem ); 

Une autre approche est:

 let result = { ...item, location : { ...response } } 

Mais la propagation d’objects n’est pas encore standardisée .

Peut aussi être utile: https://stackoverflow.com/a/32926019/5341953