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

如何简化DataWeave中基于嵌套数组条件的对象过滤逻辑?

DataWeave 简洁实现嵌套数组对象过滤

需求很明确:移除所有包含任意isDeleted为true的hobby的用户对象,只保留那些所有hobby都未被标记为删除的用户。

输入示例

var inputMessage = [
    {
        "name": "ben",
        "lastName": "TEST1",
        "hobby": [
            { id: 1, name: "football", isDeleted: false },
            { id: 2, name: "hockey", isDeleted: false }
        ]
    },
    {
        "name": "Bart",
        "lastName": "TEST2",
        "hobby": [
            { id: 1, name: "football", isDeleted: true },
            { id: 2, name: "hockey", isDeleted: false }
        ]
    }
]

期望输出

[
  {
    "name": "ben",
    "lastName": "TEST1",
    "hobby": [
      {
        "id": 1,
        "name": "football",
        "isDeleted": false
      },
      {
        "id": 2,
        "name": "hockey",
        "isDeleted": false
      }
    ]
  }
]

简洁实现方案

原代码通过标记再过滤的方式有点绕,其实用filter结合every就能一步到位:

output application/json
---
inputMessage filter ($.hobby every !$.isDeleted)

代码解释

  • filter 用来遍历并筛选用户数组,只留下满足条件的元素
  • $.hobby every !$.isDeleted 是核心判断逻辑:检查当前用户的所有hobby,确保每一个的isDeleted都不是true——只要有一个hobby被标记为删除,这个用户就会被过滤掉。

这种写法直接对应需求逻辑,比原实现简洁得多,可读性也更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:44:55