dataweave过滤器和嵌套数组列表上的maxBy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dataweave过滤器和嵌套数组列表上的maxBy相关的知识,希望对你有一定的参考价值。

我有一个学生名单以及他们各自学科的分数。我想过滤所有特定年级的学生,然后找到在特定对象中得分最高的学生。

[
  
    "name": "User 01",
    "grade": 1,
    "schoolName": "school01",
    "marks": 
      "english": 10,
      "math": 30,
      "social": 30
    
  ,
  
    "name": "User 02",
    "grade": 1,
    "schoolName": "school02",
    "marks": 
      "english": 10,
      "math": 20,
      "social": 30
    
  
]

我能够独立执行这两项操作。有人可以帮助我找到在特定年级数学得分最高的学生对象。

答案

如果我正确理解了您的要求,则此脚本会执行此操作。只需将变量等级和主题更改为您感兴趣的特定值即可。

通常来说,除了输入样本外,最好提供示例输出以及作为脚本获得的任何内容以更好地理解上下文。

%dw 2.0
output application/json
var grade = 1
var topic = "math"
---
flatten( 
    payload map (alumn, order) -> 
        (alumn.marks pluck ((value, key, index) -> 
            
                name: alumn.name, 
                grade: alumn.grade, 
                result:value, 
                topic: key
            )
        )
) // restructure the list to one result per element
filter ((item, index) -> (item.grade == grade)) // filter by grade
maxBy ((item) -> item.result) // get the maximum result
另一答案

我在下面用它来实现它。

%dw 2.0
output application/json
var grade = 1
var topic = "math"
---
payload filter (
    ((item, index) ->  item.grade == grade) 
) maxBy ($.marks.math as String format: "000000")

以上是关于dataweave过滤器和嵌套数组列表上的maxBy的主要内容,如果未能解决你的问题,请参考以下文章

在 Typescript 中过滤嵌套数组对象的数组

如何使用 reactjs 和 graphql 在 gatsby 中映射嵌套数组

使用过滤器或折叠球拍遍历嵌套列表

带有包含地图的数组的数据帧上的 Spark 过滤器

按行名过滤矩阵的嵌套列表

Spring数据匹配和过滤嵌套数组