如何使用条件映射数组

问题描述 投票:0回答:2

所以如果mD 为真,我需要映射一个dN。 但我不确定如何添加条件以进行检查,我得到的最远的是映射所有 dN。

这是有效载荷:

[{

        "groupMembers": [
            {
                "dN": "268",
                
                "mD": true
            },
            {
                "dN": "240",
                
                "mD": false
            }
        ]
    },
    {

        "groupMembers": [
            {
                "dN": "273",
                
                "mD": true
            },
            {
                "dN": "292",
               
                "mD": false
            }
        ]
    }]

我所做的是:

 payload map (value,index) -> {    LC: value.groupMembers.dN,    }

得到这个输出:

[
  {
    "LC": [
      "268",
      "240"
    ]
  },
  {
    "LC": [
      "273",
      "292"
    ]
  }]

由于“MD”中的真实陈述,我怎样才能做到只有“268”和“273”被映射? 预期的结果应该是这样的:

[
  {
    "LC": "268"
  },
  {
    "LC": "273"
  }
]
mule dataweave mulesoft
2个回答
0
投票

下面的脚本会帮助你。

%dw 2.0
output application/json
---
LC : (payload.groupMembers flatMap ($ filter($.mD == true))) map (
    ($.dN)
)

0
投票

一种方法是映射顶级元素然后过滤然后将

groupMembers
中的每个列表映射到仅
mD
的值。

%dw 2.0
output application/json
---
payload map { 
        LC:  $.groupMembers 
                filter ($.mD) 
                map ($.dN) 
    }  

输出:

[
  {
    "LC": [
      "268"
    ]
  },
  {
    "LC": [
      "273"
    ]
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.