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

如何在MS Flow中实现类似lodash _.find()的数组对象筛选功能?

如何在MS Flow中实现类似lodash _.find()的功能

刚好之前做过类似的需求,其实要实现和lodash _.find()一样的效果——从数组里找到第一个匹配指定条件的对象,在MS Flow里有两种实用的方法,我结合你给出的示例数组[ { item_id: '1234' }, { item_id: '4567' } ]来具体说明:

方法一:用可视化的Data Operations操作

这种方法适合喜欢可视化配置、不想写表达式的朋友:

  • 第一步:添加「Filter Array」操作,将你的目标数组作为输入源
  • 第二步:设置筛选规则:选择数组项的item_id字段,运算符选「等于」,输入你要匹配的值(比如'4567')
  • 第三步:添加「First」操作,把「Filter Array」的输出结果作为输入。因为Filter Array会返回所有匹配的对象数组,First操作会直接提取数组的第一个元素,这就完全对应了_.find()只取第一个匹配项的逻辑

方法二:用Workflow Definition Language表达式(更简洁)

如果想一步到位,直接用表达式就能搞定,不需要额外的操作步骤:

first(filter(你的数组变量, item()?['item_id'] == '4567'))

表达式拆解:

  • filter(你的数组变量, 条件):先从数组中筛选出所有符合条件的元素
  • first(...):取筛选结果数组的第一个元素,也就是我们要的第一个匹配对象
  • item()?['item_id']:这里的?是可选链操作符,防止数组项为空时出现报错,如果你确定数组里的每个对象都有item_id属性,也可以写成item()['item_id']或者item().item_id

空值处理(可选)

如果担心数组里没有匹配项导致报错,可以加个空值判断:

if(empty(filter(你的数组变量, item()?['item_id'] == '4567')), null, first(filter(你的数组变量, item()?['item_id'] == '4567')))

这样当没有匹配项时会返回null,而不是抛出错误。

举个实际例子,假设你把示例数组存在名为「示例数组」的变量里,要找item_id为'4567'的对象,表达式就是:

first(filter(variables('示例数组'), item()?['item_id'] == '4567'))

执行后会返回{ item_id: '4567' },完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:43:17