繁体   English   中英

Ramda不提供深层混合吗?

[英]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}}

如果您正在寻找这种东西,那么Ramda团队将很乐意提出问题 ,甚至提出 要求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM