Contact Us 1-800-596-4880

groupBy

DataWeave 2.1 is compatible with Mule 4.1. Standard Support for Mule 4.1 ended on November 2, 2020, and this version of Mule will reach its End of Life on November 2, 2022, when Extended Support ends.

Deployments of new applications to CloudHub that use this version of Mule are no longer allowed. Only in-place updates to applications are permitted.

MuleSoft recommends that you upgrade to the latest version of Mule 4 that is in Standard Support so that your applications run with the latest fixes and security enhancements.

groupBy(Array<T>, (item: T, index: Number) -> R): { (R): Array<T> }

Classifies the elements of a list (array) using the specified criteria function.

This function returns an object containing the grouping criteria as keys.

Parameters

Name Description

items

The list (Array type) to classify in groups.

criteria

Function that receives the item and index of the element to group and should return the criteria to group by.

Example

This example groups the elements of an array based on the language field. Notice that it uses the item.language selector to specify the criteria.

Source

%dw 2.0
output application/json
---
payload groupBy (item) -> item.language

Input

[
    {
      "name": "Foo",
      "language": "Java"
    },
    {
      "name": "Bar",
      "language": "Scala"
    },
    {
      "name": "FooBar",
      "language": "Java"
    }
]

Output

{
  "Scala": [
    {
      "name": "Bar",
      "language": "Scala"
    }
  ],
  "Java": [
    {
      "name": "Foo",
      "language": "Java"
    },
    {
      "name": "FooBar",
      "language": "Java"
    }
  ]
}

groupBy({ (K)?: V }, (value: V, key: K) -> R): { (R): Array<T> }

Groups elements of an object based on a supplied key.

Parameters

Name Description

object

The object to group.

criteria

The key and/or value of the object to use for grouping.

Example

The example groups an object based on its value ($$).

Source

%dw 2.0
output application/json
---
{ "a" : "b"} groupBy $

Output

{
  "b": {
    "a": "b"
  }
}

groupBy(Null, (Nothing, Nothing) -> Any): Null

Helper function that allows groupBy to work with null values.