我使用groupBy
语句在Ramda中创建了一个两级深度对象,然后我将其用于sort
和filter
。我现在想要将这些数组连接成一个并将其作为pipe
的结果返回。
我有一种方法,但对于我想做的事情,感觉真的超过了顶层。
数据示例:
{
"test1": {
"123": [
{
param1: "test1",
param2: 123,
}
]
},
"test2": {
"456": [
{
param1: "test2",
param2: 456,
}
]
},
"test3": {
"789": [
{
param1: "test3",
param2: 789,
},
{
param1: "test4",
param2: 246,
}
]
}
}
我希望管道的最终结果是:
[
{
param1: "test1",
param2: 123,
},
{
param1: "test2",
param2: 456,
},
{
param1: "test3",
param2: 789,
},
{
param1: "test4",
param2: 246,
}
]
我尝试将其恢复为一系列对象:
pipe(
...
toPairs,
map(tail),
flatten,
map(toPairs),
map(map(tail)),
flatten,
)(data)
感觉像这样的事情不应该这么困难。关于我如何做到这一点的任何其他建议?
============= EDIT =============
我也试过这个:
pipe(
...
map(values),
values,
flatten
)(data)
哪个更短,但仍然不确定它是否尽可能优雅。
答案 0 :(得分:1)
我没有看到比你更新的建议更优雅的东西。 (有趣的是,在没有看你的情况下,我想出了同样的事情,除了我切换values
和map(values)
- 无论哪种方式都有效。)
groupBy
然后展平结果的根本问题。它有什么作用?我经常使用groupBy
后跟values
,但我认为我从未见过像你这样的要求。有什么问题,如果你不介意我的问题?