【发布时间】:2019-11-18 00:18:09
【问题描述】:
我在这里需要帮助,因为我找不到合适的解决方案: 我有两个对象:
obj1 = {
name: '112',
surname: { test: '123', other: '124' },
age: 151,
height: '183',
weight: 80
};
和
obj2 = {
name: '114',
surname: { test: '124' },
age: 151,
height: 184,
weight: 81
};
新对象必须有这个输出:
new = {
name: '114',
surname: { test: '124', other: '124' },
age: 151,
height: 184,
weight: 81
};
您可以看到在 surname 属性中保留了其他属性: 我已经尝试过类似的方法,但它不起作用,必须有一个更简单的解决方案:
const newObje = Object.keys(obj2).reduce(newObj, key) => {
if (typeof (obj2[key]) === 'string' || obj2[key] === 'number') {
newObj[key] = obj2[key];
}
if (typeof (obj2[key]) === 'object' || obj2[key] === 'array') {
}
}
【问题讨论】:
-
你试过(...传播运算符?)
-
如果您的对象可以任意深,您将需要递归解决方案。
-
正如@TirthrajRao 提到的,您可以使用扩展运算符
newObj = {...obj1,...obj2}... -
如果您只需要使用给定的结构:
let res = Object.assign(obj2, {surname: Object.assign(obj1.surname, obj2.surname)})或更短:let res = {...obj2, surname: {...obj1.surname, ...obj2.surname}}
标签: javascript reactjs object merge