source open graficas grafica estadisticas datos con chart barras javascript ecmascript-6

javascript - open - Combinar dos objetos con ES6



graficas javascript open source (2)

Esta pregunta ya tiene una respuesta aquí:

Estoy seguro de que esta pregunta ya se ha hecho antes, pero no puedo encontrar la respuesta que estoy buscando, así que aquí va:

Tengo dos objetos, como sigue:

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

Necesito fusionar estos juntos para formar esto:

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

Sé que podría hacerlo así:

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

Sin embargo, siento que esta ya no es la mejor manera de hacerlo, porque ES6 introdujo el material genial de desestructuración / asignación; Intenté la fusión profunda de objetos, pero desafortunadamente no es compatible :( También examiné algunas funciones de ramda pero no pude ver nada aplicable.

Entonces, ¿cuál es la mejor manera de fusionar estos dos objetos con ES6?


Otro enfoque es:

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

Pero la propagación de objetos aún no está estandarizada .

También puede ser útil: https://.com/a/32926019/5341953


Puede usar Object.assign() para fusionarlos en un nuevo objeto:

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

También puede usar la distribución de objetos , que es una propuesta de Etapa 4 para 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 );