120 votes

Fusionner deux objets avec ES6

Je suis sûr que cette question a déjà été posée mais je n'arrive pas à trouver la réponse, je suis à la recherche d', donc voilà:

J'ai deux objets, 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'
}

J'ai besoin de fusionner ces ensemble pour former ce:

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 faire comme ceci:

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

Cependant, je pense que ce n'est pas la meilleure façon de le faire plus, parce que ES6 introduit la fraîcheur de déstructuration/cession de choses; j'ai essayé de profondeur de l'objet de la fusion, mais c'est malheureusement pas pris en charge :( j'ai aussi regardé à travers certains ramda fonctions, mais ne pouvait pas voir quoi que ce soit applicable.

Alors quel est le meilleur moyen de fusionner ces deux objets à l'aide de ES6?

181voto

Ori Drori Points 65611

Vous pouvez utiliser Object.assign() pour les fusionner en un nouvel objet:

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 );

Vous pouvez également utiliser l' objet de propagation, qui est une Étape 4 proposition de ECMAScript:

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 = { ...item, location: response }; // or { ...response } if you want to clone response as well

console.log(newItem );

73voto

notgiorgi Points 655

Une autre approche est:

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

Mais la propagation d'objet n'est pas encore normalisée .

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X