我确定之前已经问过这个问题,但我找不到我要找的答案,所以这里有:
我有两个对象,如下所示:
const response = {
lat: -51.3303,
lng: 0.39440
}
let item = {
id: 'qwenhee-9763ae-lenfya',
address: '14-22 Elder St, London, E1 6BT, UK'
}
我需要将这些合并在一起形成:
item = {
id: 'qwenhee-9763ae-lenfya',
address: '14-22 Elder St, London, E1 6BT, UK',
location: {
lat: -51.3303,
lng: 0.39440
}
}
我知道我可以这样做:
item.location = {}
item.location.lat = response.lat
item.location.lng = response.lng
然而,我觉得这不是最好的方法,因为ES6引入了很酷的解构/分配的东西;我尝试了深度对象合并,但不幸的是不支持:(我也查看了一些ramda函数,但看不到任何适用的东西。
那么使用ES6合并这两个对象的最佳方法是什么?
答案 0 :(得分:106)
您可以使用Object.assign()
将它们合并到一个新对象中:
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 );
您还可以使用object spread,这是ECMAScript的第4阶段提案:
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 );
答案 1 :(得分:34)