You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MuleSoft DataWeave过滤AreaId不匹配所有SchoolId的数组对象

MuleSoft DataWeave脚本:筛选AreaId不匹配所有SchoolId的元素

需求说明

输入为包含学校信息的JSON数组,需筛选出AreaId与数组中所有对象的SchoolId均不匹配的元素。

输入示例

[
  {
    "schoolName": "ABC",
    "SchoolId": "3444444",
    "AreaId": "2334555",
    "Number": "100"
  },
  {
    "schoolName": "ABC",
    "SchoolId": "77655444",
    "AreaId": "3444444",
    "Number": "100"
  },
  {
    "schoolName": "ABC",
    "SchoolId": "456666",
    "AreaId": "77655444",
    "Number": "100"
  },
  {
    "schoolName": "ABC",
    "SchoolId": "2334555",
    "AreaId": "555555",
    "Number": "100"
  }
]

输出示例

[
  {
    "schoolName": "ABC",
    "SchoolId": "2334555",
    "AreaId": "555555",
    "Number": "100"
  }    
]

注:输出示例中的SchoolId疑似笔误,实际筛选结果应保留输入中对应元素的原始SchoolId值

DataWeave解决方案

%dw 2.0
output application/json
---
// 提取所有SchoolId并转为集合,优化查找效率
var allSchoolIds = payload.SchoolId as Set<String>
// 过滤出AreaId不在所有SchoolId集合中的元素
payload filter ((item) -> !(item.AreaId in allSchoolIds))

逻辑说明

  1. 提取SchoolId集合:通过payload.SchoolId获取数组中所有SchoolId的值,转为Set<String>类型——集合的唯一性特性可避免重复值干扰,同时in操作在集合上的执行效率优于数组。
  2. 筛选目标元素:使用filter函数遍历输入数组,判断当前元素的AreaId是否不在allSchoolIds集合中,仅保留符合条件的元素。

内容的提问来源于stack exchange,提问作者Rohitbit00

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 16:03:12