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计划