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

如何在Logic App中检查集合内是否存在指定匹配键值

解决方案:在Logic App中检查集合是否存在指定键值匹配项

针对你的需求,不需要用For Each循环(这也是你报错的常见原因,循环内的条件判断逻辑容易出错),直接用Logic App内置的Filter Array操作或表达式就能高效解决,核心要注意类型匹配(你的FundKey是字符串类型,ReportType是数字类型,必须统一类型后再比较)。

方法一:使用Filter Array操作(直观易维护)

  1. 添加Filter Array操作,在「From」选项中选择数组变量 variables('ReportTypeCollection')
  2. 设置筛选条件:
    • 左侧输入:item()?['FundKey'](引用数组中每个元素的FundKey字段)
    • 中间选择「is equal to」
    • 右侧输入表达式:string(body('Process_Filtered_Output')?['FilteredResults'][0]?['ReportType'])(把ReportType的数字转成字符串,和FundKey类型统一)
  3. 添加Condition操作,判断Filter Array的输出长度是否大于0:
    • 左侧输入:length(body('Filter_Array'))
    • 中间选择「is greater than」
    • 右侧输入:0
  4. 如果Condition结果为「Yes」,说明存在匹配项;「No」则不存在。

方法二:直接用表达式在Condition中判断(更简洁)

不需要额外添加Filter Array,直接在Condition的判断框中输入以下表达式:

length(filterArray(variables('ReportTypeCollection'), equals(item()?['FundKey'], string(body('Process_Filtered_Output')?['FilteredResults'][0]?['ReportType'])))) > 0
  • 表达式逻辑:用filterArray筛选出匹配的元素,再用length判断结果数组长度,大于0则表示存在匹配项。

关键注意点

  • 类型匹配:你的FundKey是字符串(比如"1"),而ReportType是数字(比如1),直接比较会不匹配,必须用string()把数字转成字符串,或者用int()把FundKey转成数字。
  • 空值处理:表达式中用?是为了防止字段不存在时抛出错误,提升流程健壮性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 21:12:10