问题描述
我正在尝试比较选择连接器中的以下两个值,并尝试从值2和值1的值中捕获缺失的值
值1:
[
{
"FName": "salesforce.com"
},{
"FName": "jobs"
},{
"FName": "2020"
},{
"FName": "06-2020"
}
]
值2:
[
{
"name": "salesforce.com"
},{
"name": "jobs"
}
]
Am使用选择条件vars.NameVar == vars.SplitName
我需要捕获值2中缺少的值“ FName”:“ 2020”和“ FName”:“ 06-2020”
解决方法
脚本:
%dw 2.0
output application/json
import * from dw::core::Arrays
var a=[
{
"FName": "salesforce.com"
},{
"FName": "jobs"
},{
"FName": "2020"
},{
"FName": "06-2020"
}
]
var b=[
{
"name": "salesforce.com"
},{
"name": "jobs"
}
]
---
leftJoin(a,b,(x) -> x.FName,(x) -> x.name)
filter !$.r?
map $.l
输出:
[
{
"FName": "2020"
},{
"FName": "06-2020"
}
]
,
尝试此脚本。这只会显示从 value1 到 value2
不匹配的项目输入:
%dw 2.0
var value1=[
{
"FName": "salesforce.com"
},{
"FName": "06-2020"
}
]
var value2=[
{
"name": "salesforce.com"
},{
"name": "jobs"
}
]
output application/json
---
value1[?(!(value2.name contains $.FName))]
输出:
[
{
"FName": "2020"
},{
"FName": "06-2020"
}
]
诀窍是使用包含和!符号。如果删除 ! ,则会颠倒逻辑,仅显示匹配的值。