[英]Ramda does not provide deep mixin?
var _ = require('ramda');
var obj1 = {
innerNum: 1,
innerObj: {
innerStr: 'a',
innerStrB: 'Z'
}
};
var obj2 = {
innerNum: 2,
innerObj: {
innerStr: 'b'
}
};
var mixedObj = _.mixin(obj1, obj2);
mixedIObj不包含内部对象的innerStrB。 任何ramda解决方案?
目前尚不清楚您想要在这里做什么。 我见过的大多数mixin
/ extend
实现都很浅,将第二个对象中的键值添加到第一个对象中,覆盖了重复键的位置。
Ramda确实具有在特定路径( assocPath)上克隆具有更新值的对象的功能。 我猜测这并不能满足您的所有需求:
R.assocPath('innerObj.innerStr', 'b', obj1); //=>
// {
// innerNum: 1,
// innerObj: {
// innerStr: 'b',
// innerStrB: 'Z'
// }
// }
问题是,深度混入的真正含义是什么。 如果对象具有相同的结构,则非常清楚,但如果不相同,则可能会有些毛茸茸:
mixinDeep(
{a: 1, b: {c: 2, d: 3}},
{b: {d: {e: 4, f: 5}, g: 6}}
);
// ?=>? {a: 1, b: {c: 2, d: {e: 4, f: 5}, g: 6}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.