提问人:user20829088 提问时间:12/25/2022 最后编辑:user20829088 更新时间:12/28/2022 访问量:450
逻辑应用检查数组上的 null 值,然后将其替换为字符串
Logic app check null values on array then replace it with string
问:
所以我正在尝试检查循环中的数组空值,但我真的不知道正确的格式
数组示例:
[
'value 1',
'value 2',
'',
'value 4',
]
这是我试图写的表达:
if(empty(outputs('splitTD')[variables('FirstRecord')]), replace(outputs('splitTD')[variables('FirstRecord')], '', 'Not specified' ), outputs('splitTD')[variables('FirstRecord')])
答:
0赞
Skin
12/26/2022
#1
您将无法将内联表达式用于整个数组。我尝试将数组转换为字符串并使用表达式,但它只是不想转换回数组。replace
您需要遍历它并以这种方式进行处理。此外,如果要确保数组保持其原始顺序,则需要将并发性转换为 1,否则,它将并行运行,并调用竞争条件样式结果到更新的数组。
循环中的组件是 IF 语句,它将决定如何处理每个项目。
if(or(equals(item(),null), equals(item(), '')), 'Not specified', item())
将其加载到租户中,以查看工作版本。
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"For_Each_Array_Item": {
"actions": {
"Append_To_Updated_Array": {
"inputs": {
"name": "Updated Array",
"value": "@if(or(equals(item(),null), equals(item(), '')), 'Not specified', item())"
},
"runAfter": {},
"type": "AppendToArrayVariable"
}
},
"foreach": "@variables('Array')",
"runAfter": {
"Initialize_Updated_Array": [
"Succeeded"
]
},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
},
"type": "Foreach"
},
"Initialize_Array": {
"inputs": {
"variables": [
{
"name": "Array",
"type": "array",
"value": [
"value 1",
"value 2",
"",
"value 4"
]
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Initialize_Updated_Array": {
"inputs": {
"variables": [
{
"name": "Updated Array",
"type": "array"
}
]
},
"runAfter": {
"Initialize_Array": [
"Succeeded"
]
},
"type": "InitializeVariable"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"manual": {
"inputs": {
"method": "GET",
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
},
"parameters": {}
}
这是最终结果(上面的 JSON 中不存在此 compose 语句,但您不需要)......
评论
0赞
user20829088
12/28/2022
您好,感谢您的回复。我尝试了你的 if 语句代码我的项目,但它没有像我预期的那样工作。我看到你得到的结果顺序相同,我不知道为什么对我来说它不一样。因此,对于我的项目,我使用 2 个循环和 2 个数组。第一个数组将循环以在第一个数组中附加数据。然后第二个将循环并检查 null,然后附加到另一个数组。它确实检查了数据并进行了替换,但结果不在同一顺序上。
0赞
Skin
12/28/2022
是的,并发。
1赞
RithwikBojja
12/26/2022
#2
我已经在我的环境中重现,并得到了以下预期结果:
首先,我用您给定的输入初始化了数组,然后再次初始化了另一个空数组,然后,我为每个循环使用了条件并得到了结果并遵循以下过程:if(empty(item()),'No Element',item())
in compose 变量如下:
输出:
编辑:
您需要按如下方式处理并发以获得正确的顺序:
评论
0赞
user20829088
12/28/2022
您好,感谢您的回复。我尝试了您的解决方案,但我得到的结果与我想要的顺序不同,有解决方案吗?
0赞
RithwikBojja
12/28/2022
@user20829088,我已经根据您的要求在最后编辑了我的答案,并让我知道这是否适合您,我想它应该可以工作
评论