Dataweave 使用自定义列表排序

Dataweave sort by using custom list

我需要根据定义的列表对数据进行排序,而不是按字母顺序和数字顺序。 排序顺序在变量“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"
  },
  {
    "Name": "Dan",
    "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) )