javascript - 使用 ramda.js 获取嵌套对象数组中某个键的所有值

标签 javascript arrays json nested ramda.js

我对如何使用 ramda 继续处理这个场景感到有点困惑。这是我正在使用的 JSON。

{ "type" : "CartWsDTO",<br/> "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 循环和 if 条件下我能够实现它。但使用 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}]

或者无论如何,你必须做出一些改变。

关于javascript - 使用 ramda.js 获取嵌套对象数组中某个键的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34314769/

相关文章:

javascript - 日期范围提示模态不能用作所述模态中的变量

arrays - 包含所有元素而不使用数组的最短子数组?

c - 结构内部数组的声明有时会失败

c - 数组的指针错误

java - :url includeParams ="none" with s:select didn't work inside s:form

javascript - AngularJS 在 ng-repeat 中编辑并保存值

javascript - 向js中函数内部的对象添加方法

javascript - JS 脚本无法理解通过 PHP 分配给 HTML 输入值的变量

javascript - 是否可以在 Javascript 中更改或删除全局对象的属性?

ajax - json、ajax 和 jQuery 出现无法解释的错误