【发布时间】:2017-11-04 09:49:26
【问题描述】:
我想使用 ramba 进行以下转换
输入集合
const vals = [
{metric: "Sales", measure:100, period_end_date: "2021-12-31", period_type: 'Annual' },
{metric: "EBT", measure:101, period_end_date: "2021-12-31", period_type: 'Annual' },
{metric: "Sales", measure:100, period_end_date: "2021-09-30", period_type: 'Qtr' },
{metric: "EBT", measure:101, period_end_date: "2021-09-30", period_type: 'Qtr' }
]
输出
{
"2021-09-30|Qtr": [{"Sales": 100}, {"EBT": 101],
"2021-12-31|Annual": [{"Sales": 100, }, {"EBT": 101,}]
}
我能够非常接近这个
const keyGen = compose(objOf('key'), join('|'), props(['period_end_date','period_type']))// + '|' + prop("period_type",o) }
const valGen = compose(apply(objOf), R.ap([R.prop('metric'), R.prop('measure')]), of )
const f4 = map(compose(apply(merge), R.ap([keyGen, valGen]), of))
const result =compose(groupBy(prop('key')),f4 ) (vals)
这给了我以下结果
{"2021-09-30|Qtr": [{"Sales": 100, "key": "2021-09-30|Qtr"},
{"EBT": 101, "key": "2021-09-30|Qtr"}],
"2021-12-31|Annual": [{"Sales": 100, "key": "2021-12-31|Annual"},
{"EBT": 101, "key": "2021-12-31|Annual"}]}
现在我需要从内部集合中删除 key。我想知道是否有更好的选择。
【问题讨论】:
标签: javascript functional-programming ramda.js