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

使用DataWeave排序嵌套数组失效问题排查

DataWeave 2.0嵌套数组排序失效问题排查与修复

你的嵌套数组排序失效有两个核心问题:

1. Update语法中的路径错误

在update块里,你写的case .item.products是错误的——当前上下文已经是map迭代的item对象,直接用.products就能定位到要更新的数组,错误路径会导致根本没修改原数据。

2. 字段名称不统一导致排序逻辑失效

第二个products数组里的产品标识字段是product_ref,不是product,你统一用$.product会返回null,indexOf(sortOrder, null)会返回-1,所有元素的排序权重一致,自然不会触发排序。需要兼容两种字段名。

修正后的代码

%dw 2.0
output application/json
import indexOf from dw::core::Arrays
var sortOrder=["P_A", "P_B"]
var myInput=[
    {
        "command": "AZ59696",
        "products": [
            {
                "product": "P_B",
                "price": 12
            },
            {
                "product": "P_A",
                "price": 21
            }
        ]
    },
    {
        "command": "BA23122",
        "products": [
            {
                "product_ref": "P_A",
                "price": 21
            },
            {
                "product_ref": "P_B",
                "price": 12
            }
        ]
    }
]
---
myInput map ((item, index) -> item update {
    case .products -> item.products orderBy( 
        indexOf(sortOrder, $.product default $.product_ref)
    )
})

代码说明

  • 把case .item.products改为case .products,正确定位到要更新的嵌套数组
  • 用$.product default $.product_ref兼容两种不同的字段名,确保能正确获取到产品标识去匹配sortOrder的索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 07:18:19