%dw 2.0
output application/json
---
[0, 1, 2, 3, 3, 2, 1, 4] distinctBy (value) -> { "unique" : value }
distinctBy
distinctBy<T>(@StreamCapable items: Array<T>, criteria: (item: T, index: Number) -> Any): Array<T>
Iterates over the input and returns the unique elements in it.
DataWeave uses the result of the provided lambda as the uniqueness criteria.
This version of distinctBy
finds unique values in an array. Other versions
act on an object and handle a null
value.
Parameters
Name | Description |
---|---|
|
The array to evaluate. |
|
The criteria used to select an |
Example
This example inputs an array that contains duplicate numbers and returns an
array with unique numbers from that input. Note that you can write the same
expression using an anonymous parameter for the values:
[0, 1, 2, 3, 3, 2, 1, 4] distinctBy $
Example
This example removes duplicates of "Kurt Cagle"
from an array.
Source
%dw 2.0
output application/json
var record = {
"title": "XQuery Kick Start",
"author": [
"James McGovern",
"Per Bothner",
"Kurt Cagle",
"James Linn",
"Kurt Cagle",
"Kurt Cagle",
"Kurt Cagle",
"Vaidyanathan Nagarajan"
],
"year":"2000"
}
---
{
"book" : {
"title" : record.title,
"year" : record.year,
"authors" : record.author distinctBy $
}
}
distinctBy<K, V>(object: { (K)?: V }, criteria: (value: V, key: K) -> Any): Object
Removes duplicate key-value pairs from an object.
Parameters
Name | Description |
---|---|
|
The object from which to remove the key-value pairs. |
|
The |
Example
This example inputs an object that contains duplicate key-value pairs and
returns an object with key-value pairs from that input. Notice that the
keys (a
and A
) are not treated with case sensitivity, but the values
(b
and B
) are. Also note that you can write the same expression using
an anonymous parameter for the values:
{a : "b", a : "b", A : "b", a : "B"} distinctBy $
Example
This example removes duplicates (<author>James McGovern</author>
)
from <book/>
.
Source
%dw 2.0
output application/xml
---
{
book : {
title : payload.book.title,
authors: payload.book.&author distinctBy $
}
}