javascript Ramda Receips
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Ramda Receips相关的知识,希望对你有一定的参考价值。
import R from 'ramda'
// <A, B> (path: Array<string>, fn: (value: A) => A, (val: B) => B) => B
export const updatePath = R.curry((path, fn, val) =>
R.assocPath(path, fn(R.path(path, val)), val)
)
// Usage:
// updatePath(
// ['foo'],
// (val) => 'bar',
// { foo: 'yolo' }
// )
//
// Output:
// { 'foo': 'bar' }
import R from 'ramda'
const mergePlan = (x, y) => {
if(Array.isArray(x) && Array.isArray(y)) {
return R.uniq(R.concat(x, y));
}
if(typeof x === 'object' && typeof y === 'object'){
return R.mergeWith(mergePlan, x, y)
}
return y;
}
export const deepMerge = R.mergeWith(mergePlan)
// Usage:
// deepMerge(
// { baz: ['yolo'], foo: 'bar' },
// { baz: ['bar'], foo: 'yolo' }
// )
//
// Output:
// { 'baz': ['yolo', 'bar'], 'foo': 'yolo' }
以上是关于javascript Ramda Receips的主要内容,如果未能解决你的问题,请参考以下文章
javascript Ramda` then`示例
javascript Ramda`pathEq` vs`propEq`
javascript ramda额外的集合
javascript ramda.js
javascript 在Ramda制作镜头
javascript ramda计划