对于如何使用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}]


或其他任何方式,您都必须进行一些更改。

09-10 11:40