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

如何使用DataWeave按对象值将对象数组拆分为二维数组

按指定字段拆分数组(DataWeave实现)

问题需求

将对象数组按route字段值为"L1"的元素拆分,每个子数组包含从上一个拆分点到当前"L1"元素的所有对象(包含"L1"元素本身)。

解决方案代码

%dw 2.0
output application/json
---
payload reduce ((item, acc = {current: [], result: []}) -> 
    if (item.route == "L1") {
        current: [],
        result: acc.result << (acc.current << item)
    } else {
        current: acc.current << item,
        result: acc.result
    }
).result

代码解释

  1. 核心思路:利用reduce函数维护遍历过程中的状态,实现动态分组。累加器acc包含两个关键部分:
    • current:临时存储当前正在构建的子数组
    • result:存储已完成拆分的子数组集合
  2. 遍历逻辑:
    • 遇到route="L1"的元素时,将current数组与当前元素合并,追加到result中,随后重置current为空数组
    • 非"L1"元素直接加入current数组,继续构建当前子数组
  3. 结果提取:遍历结束后,累加器中的result字段即为最终的拆分结果

为什么不用splitAt/filter?

  • splitAt需要提前知道固定拆分索引,无法适配动态的"L1"位置
  • filter仅能筛选元素,无法实现连续区间的分组拆分,不符合需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:35:14