对于如何使用ramda进行此方案,我有些困惑。这是我正在使用的JSON。{ "type" : "CartWsDTO",
"Cartentries" : [ { "entryNumber" : 1, "flightGroup" : { "PAXDetails" : [ { "paxID" : "1", "paxPrice" : "770.82", "paxType" : "ADT" }, { "paxID" : "2", "paxPrice" : "770.82", "paxType" : "ADT" } ] } }, { "entryNumber" : 2, "flightGroup" : { "PAXDetails" : [ { "paxID" : "1", "paxName" : "Vinitha", "paxPrice" : "770.82", "paxSurname" : "Vinitha", "paxType" : "ADT" }, { "paxID" : "2", "paxName" : "Prahal", "paxPrice" : "770.82", "paxSurname" : "Prahal", "paxType" : "ADT" } ] } } ]}
上面的JSON中有2个CartEnteries。每个条目的flightGroup中都有一个名为paxDetails的数组。从这个paxDetails数组中,我想选择paxPrice并对该购物车条目的所有pax价格求和。在传统的for循环中,如果条件可以实现。但是使用Ramda我不知道如何开始。请给我一个解决方案。
提前致谢。
最佳答案
对我来说,您要寻找的输出内容还不是很清楚。这是一个仅返回两组价格之和并返回包含这些值的数组的解决方案:
var calcTotals = R.pipe(
R.prop('Cartentries'),
R.map(R.pipe(
R.path(['flightGroup', 'PAXDetails']),
R.map(R.pipe(R.prop('paxPrice'), Number)),
R.sum
))
);
calcTotals(cart); //=> [1541.64, 1541.64]
但是,如果您想要不同类型的输出,例如
{1: 1541.64, 2: 1541.64}
要么
[{entryNumber : 1, total: 1541.64}, {entryNumber: 2. total: 1541.64}]
或其他任何方式,您都必须进行一些更改。