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