ramda 根据类型合并 2 json 个对象

ramda merging 2 json objects depending on there types

我需要合并 2 个 json 对象,当值是数组时,内容应该连接起来,如果值是原始类型,那么应该采用第一个对象的值。

R.mergeDeepWith(R.concat,
                { a: true, c: { values: [10, 20], d: { names: ['Alex']} }},
                { a: false, b: true, c: { values: [15, 35] , d: { address: ['Diesel Str 2']}}});

数组或深层对象正在工作,但对于键 a 我收到错误。

我可能会这样做:

const myMerge = mergeDeepWith(
  (a, b) => is (Array) (a) && is (Array) (b) ? concat (a, b) : a)
  
console .log (myMerge (
  {a: true, c: {values: [10, 20]}},
  {a: false, b: true, c: {values: [15, 35]}}
))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.27.1/ramda.min.js"></script>
<script>const {mergeDeepWith, is, concat} = R</script>

我们使用 mergeDeepWith 然后调用 concat 如果两个参数都是数组,如果不是则选择第一个。