基于 Mule 4 中的删除数组从数组中删除对象

Remove object from array based on remove array in Mule 4

我想从删除数组中的用户数组中删除所有对象。请更正下面提到的我的 DataWeave 代码。还提到了预期输出。

            %dw 2.0
            output application/json
            var remove =[
            {
            "startDate": "2022-04-13",
            "objectName": "Account"
            }
            ]
            var users = [{
                    "startDate": 20220412,
                    "objectName": "Account"
                },
                {
                    "startDate": 20220412,
                    "objectName": "Blanket Agreemt"
                }
            ]
            ---
            users filter ((item, index) -> item.objectName != value.objectName) map (value, key) -> {
                "objectName": value.objectName
            }

预期输出:

            [{
                "startDate": 20220412,
                "objectName": "Blanket Agreemt"
            }]

过滤器无效,问题不明。我会做一个有根据的猜测,即 objective 是 return 列表中的所有元素,它们的 objectName 也存在于 remove 中的一个对象中。后面的map()好像不需要。

为了解决我们可以用multi-value selector (remove.*objectName) and use contains()函数将所有objectNames收集到一个列表中,以检查users的当前元素是否存在于remove数组中。最后需要 not() 来完成 filter.

的条件
%dw 2.0
output application/json
var remove =[
    {
        "startDate": "2022-04-13",
        "objectName": "Account"
    }
]
var users = [
    {
        "startDate": 20220412,
        "objectName": "Account"
    },
    {
        "startDate": 20220412,
        "objectName": "Blanket Agreemt"
    }
]
---
users 
    filter ((item, index) -> not (remove.*objectName contains ( item.objectName)))