懒惰的人想知道是否有更好的方法将一个对象(源)中的属性复制到另一个对象(目标)中,前提是该属性存在于另一个对象中?它不一定必须使用Underscore。
例如,
_.mixin({
assign: function (o, destination, source) {
for (var property in source) {
if (destination.hasOwnProperty(property)) {
destination[property] = source[property];
}
}
return destination;
}
});
console.log( _().assign({ a: 1, b: 2, d: 3 }, { a: 4, c: 5 }) ) // a: 4, b: 2, d: 3
一种懒惰的选择是:
_.extend(a, _.pick(b, _.keys(a)));
_.pick
过滤源通过使用对象.keys
的的目的地对象和结果用于延伸的目的地对象。
如果您不想修改原始对象,只需将一个空对象传递给该_.extend
函数。
_.extend({}, a, _.pick(b, _.keys(a)));
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句