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

Power Automate Cloud:如何基于Value字段合并JSON对象并去重

Power Automate 基于指定字段(value)高效去重合并JSON数组

核心思路

Power Automate 的 union() 函数是对比整个对象是否完全一致来实现去重的,无法直接基于单个字段去重。要实现仅按value字段去重且保留完整条目,需先将数组转换为以value为唯一键的对象(利用对象键的唯一性自动去重),再提取对象的值得到最终数组,全程无需循环,效率和Select操作一致。

具体操作步骤

假设你的两个数据源ExistingRoutes和ImportedRoutes返回的是包含条目的数组(如果数组嵌套在value或items字段里,自行替换路径):

  1. 合并两个数组
    添加一个「Compose」操作,输入公式:

    concat(body('ExistingRoutes'), body('ImportedRoutes'))
    

    如果数组在value字段下,公式改为:

    concat(body('ExistingRoutes')?['value'], body('ImportedRoutes')?['value'])
    
  2. 转换为以value为键的对象
    添加一个「Select」操作:

    • 从:选择上一步Compose的输出
    • Map:点击「切换到输入整个对象」,输入公式:
      {
          "@{item()?['value']}": @{item()}
      }
      

    这一步会自动将相同value的条目覆盖(保留最后一个出现的条目,若想保留第一个,调整合并数组的顺序即可)。

  3. 提取去重后的完整条目
    添加另一个「Compose」操作,输入公式:

    values(outputs('Select'))
    

    输出结果就是仅按value字段去重后的完整条目数组。

为什么你之前的公式报错/不符合需求

  • 直接union(body('ExistingRoutes')?['value'], ...):仅合并了value字段的数组,丢失了其他字段信息,不符合保留完整条目的需求。
  • union(select(...), select(...)):Select仅提取了value值,得到的是纯value数组,同样丢失了完整条目。
  • 直接union整个数组:只有当两个对象所有字段完全一致时才会去重,无法实现仅按value去重的目标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 03:42:52