使用自定义列表对Dataweave进行排序

问题描述

我需要根据定义的列表对数据进行排序,而不是按字母顺序和数字顺序。 排序顺序在变量“ sortOrder”中

%dw 2.0
output application/json
var sortOrder = [ "Brad","Alex","Dan","Chad"]
var myPayload = [
    {
        "Name": "Dan","Id": "3"
    },{
        "Name": "Brad","Id": "4"
    },{
        "Name": "Alex","Id": "2"
    }
    {
        "Name": "Chad","Id": "1"
    }
    {
        "Name": "Dan","Id": "5"
    }
]
---
myPayload

输出必须是这样。

[
  {
    "Name": "Brad","Id": "4"
  },{
    "Name": "Alex","Id": "2"
  },{
    "Name": "Dan","Id": "3"
  },"Id": "5"
  },{
    "Name": "Chad","Id": "1"
  }
]

Dan有2个条目,在这种情况下,排序应基于“ Id”

解决方法

您可以使用Name来按sortOrder元素的索引进行排序。

%dw 2.0
import * from dw::core::Arrays
output application/json
var sortOrder = [ "Brad","Alex","Dan","Chad"]
var myPayload = [
    {
        "Name": "Dan","Id": "3"
    },{
        "Name": "Brad","Id": "4"
    },{
        "Name": "Alex","Id": "2"
    },{
        "Name": "Chad","Id": "1"
    },{
        "Name": "Dan","Id": "5"
    }
]
---
myPayload orderBy( indexOf(sortOrder,$.Name) )

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...