首页 > 解决方案 > 嵌套数组列表上的 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
    }
  }
]

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

标签: mulesoft

解决方案


我在下面使用它来实现它。

%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"})

推荐阅读