使用 ramda.js 获取嵌套对象数组中某个键的所有值
Get all values of a key in a nested array of objects using 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"
} ]
}
} ]
}
上面有2个CartEnteriesJSON。每个条目的 flightGroup 中都有一个名为 paxDetails 的数组。从这个 paxDetails 数组中,我想选择 paxPrice 并计算该购物车条目的所有 pax 价格的总和。在传统的 for 循环和 if 条件下我能够实现它。但是使用 Ramda 我无法理解如何开始。请给我一个解决方案。
提前致谢。
我不太清楚您要寻找的输出是什么。这是一个简单的解决方案 returns 两组价格的总和和 returns 具有这些值的数组:
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}]
或者其他什么,你必须做一些改变。
我对如何使用 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"
} ]
}
} ]
}
上面有2个CartEnteriesJSON。每个条目的 flightGroup 中都有一个名为 paxDetails 的数组。从这个 paxDetails 数组中,我想选择 paxPrice 并计算该购物车条目的所有 pax 价格的总和。在传统的 for 循环和 if 条件下我能够实现它。但是使用 Ramda 我无法理解如何开始。请给我一个解决方案。
提前致谢。
我不太清楚您要寻找的输出是什么。这是一个简单的解决方案 returns 两组价格的总和和 returns 具有这些值的数组:
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}]
或者其他什么,你必须做一些改变。