问题描述
我需要根据定义的列表对数据进行排序,而不是按字母顺序和数字顺序。 排序顺序在变量“ 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) )