javascript - 使用 ramda 将包含数组的对象解压缩为对象数组

标签 javascript functional-programming ramda.js

我是函数式编程(和 ramda)方面的菜鸟。 我不知道如何利用这个:

[{  
      "name":"SBRF IANUA EFS CC Integration",
      "expand":false,
      "check":"N",
      "jsonDiffPath":"/repo/Dynamics/Business Service/SBRF IANUA EFS CC Integration",
      "changeCount":1,
      "items":[  
         {  
            "name":"CRP-37920",
            "expand":false,
            "check":"N",
            "jsonDiffPath":null,
            "changeCount":1,
            "items":[],
            "op":"MODIFY",
            "oldSnapshot":"723012",
            "newSnapshot":"948053",
            "myChange":false
         }
      ],
"id":"F5ZGK4DPF5CHS3TBNVUWG4ZPIJ2XG2LOMVZXGICTMVZHM2LDMUXVGQSSIYQESQKOKVASARKGKMQEGQZAJFXHIZLHOJQXI2LPNY======",
      "objectId":"30263",
      "group":"repo",
      "category":"Dynamics",
      "type":"Business Service"
   }
]

像这样:

[  
   {  
      "name":"[CRP-37920] SBRF IANUA EFS CC Integration",
      "expand":false,
      "check":"N",
      "jsonDiffPath":"/repo/Dynamics/Business Service/SBRF IANUA EFS CC Integration",
      "changeCount":1,
      "op":"MODIFY",
      "oldSnapshot":"723012",
      "newSnapshot":"948053",
      "items":[],
  "id":"F5ZGK4DPF5CHS3TBNVUWG4ZPIJ2XG2LOMVZXGICTMVZHM2LDMUXVGQSSIYQESQKOKVASARKGKMQEGQZAJFXHIZLHOJQXI2LPNY======",
      "objectId":"30263",
      "group":"repo",
      "category":"Dynamics",
      "type":"Business Service"
   }
]

“items”数组的每个元素都应与其父数组合并(具有内部数组的对象 => 合并到对象数组中)

提前致谢)

最佳答案

如果我正确理解您的要求,一种可能性是这样的:

const alterOne = chain(
  children => parent => map(merge(__, dissoc('items', parent)), children),
  prop('items')
)

const alterAll = pipe(map(alterOne), flatten)

可能有一些好方法可以使传递到 alterOne 中的 chain 的第一个函数成为无点的,但这对我来说似乎已经很可读了。

您可以在 Ramda REPL 中看到这一点

关于javascript - 使用 ramda 将包含数组的对象解压缩为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46289059/

相关文章:

javascript - 通过在 Firefox 中单击后退按钮访问时重新加载页面

Google 表格脚本中的 Javascript : help using setNumberFormat

javascript - Woocommerce TypeError : $(. ..).on 不是函数

javascript - 使用 jquery 将选定的表单附加到表中?

f# - 柯里化(Currying)和多重积分

Java 仅当存在时可选返回值

scala - 我可以使用哪些工具来对 Scala 代码进行基准测试?

javascript - 使用 ramda 转换集合

javascript - 使 Ramda.js 函数全局可访问(无需 R.)

javascript - 使用 Ramda 将两个数组与两个不同的键组合在一起