Him*_*mel 5 javascript functional-programming ramda.js
我试图找到一个同等功能的Lodash的合并使用Ramda,做一个递归对象键为基础的"合并"或"扩展".行为类似于以下内容:
let merged = R.someMethod(
{ name: 'Matt', address: { street: 'Hawthorne', number: 22, suffix: 'Ave' }},
{ address: { street: 'Pine', number: 33 }}
);
console.log(merged);
// => { name: 'Matt', address: { street: 'Pine', number: 33, suffix: 'Ave' }}
Run Code Online (Sandbox Code Playgroud)
我在下面简要介绍的pull请求中注意到R.set了,但之后很快就回滚了.从那以后,Ramda库是否已捕获此功能?
Ramda有这个功能吗?
可以使用创建相对简单的递归函数R.mergeWith.
function deepMerge(a, b) {
return (R.is(Object, a) && R.is(Object, b)) ? R.mergeWith(deepMerge, a, b) : b;
}
deepMerge({ name: 'Matt', address: { street: 'Hawthorne', number: 22, suffix: 'Ave' }},
{ address: { street: 'Pine', number: 33 }});
//=> {"address": {"number": 33, "street": "Pine", "suffix": "Ave"}, "name": "Matt"}
Run Code Online (Sandbox Code Playgroud)
Ramda目前不包括这样的功能.
有几次尝试创造一个,但他们似乎建立了这种功能真正需要的概念.
如果您认为值得添加,请随意提出问题.
(两年后).这最终加入,在窗体的几个功能:mergeDeepLeft,mergeDeepRight,mergeDeepWith,和mergeDeepWithKey.
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |