【发布时间】:2017-01-16 04:32:12
【问题描述】:
我想用对象 A 的属性和对象 B 的属性值创建一个新对象(不修改任何现有对象),如果该属性存在于对象 B 中,如果不存在则默认为对象 A。
类似于Object.assign({}, a, b),但忽略所有不在第二个参数中的键。
有没有办法用 Lodash 做到这一点?
这是我正在寻找的原生 JS 实现:
function overshadow(oldObj, newObj) {
return Object.keys(oldObj)
.reduce((result, key) => {
result[key] = newObj[key] || oldObj[key];
return result;
}, {});
};
a = { one: 1, two: 2 };
b = { one: 'a', three: 'b' };
c = overshadow(a, b);
console.log(c) // { one: "a", two: 2 }
【问题讨论】:
-
但它会添加
b中不存在的a的属性,而这正是我想要避免的。 -
那我猜不可能:(
标签: javascript merge functional-programming javascript-objects lodash