我使用ramda在同一列表中列出了相同的操作,如下所示:
size: { sum: R.sum(R.map(R.prop('size'), ordersRep)) },
price: { sum: R.sum(R.map(R.prop('price'), ordersRep)) },
profit: { sum: R.sum(R.map(R.prop('profit'), ordersRep)) },
discount: { sum: R.sum(R.map(R.prop('discount'), ordersRep)) },
我想定义主要功能:R.sum(R.map(R.prop('somthing'), ordersRep))
其他地方并在需要时使用它。但它需要两个参数列表和一个道具名称。我怎么处理它?
答案 0 :(得分:3)
let combined = (prop, coll) => R.sum(R.pluck(prop, coll))
对于一个可以说更具功能性的版本(Ross Mackay提供免费礼貌):
let combined = prop => R.compose(R.sum, R.pluck(prop))
let sumPrice = combined('price');
sumPrice([{price: 2}, {price: 3}]); // 5
点免费:
let combined = R.curryN(2, R.compose(R.sum, R.pluck));