to_dictionary
Convert an array into an object with a specific structure
Definition
object to_dictionary(array[any] $array, expression->string $keyExpression, expression->any $valueExpression)
Converts $array
into an object. Evaluates $keyExpression
against the $array
elements, and each unique result of a $keyExpression
yields a key. The value is an array whose elements are the evaluations of $valueExpression
on the elements that yield the same result upon evaluating the $keyExpression
.
Parameters
array[any] $array
Array to convert to object.
expression->string $keyExpression
Expression defining the keys of the new dictionary.
expression->any $valueExpression
Expression defining the values in the array assigned to keys resulting from $keyExpression
Returns
object
Object where the keys are the results of evaluating $keyExpression
against $array
elements, and values equal to arrays of results of applying $valueExpression
to the elements with equal $keyExpression
values. For elements where $keyExpression
evaluates to null
, the default key name is _
.
Examples
{
"simpleArray": [1, 2, 3],
"objectArray": [
{
"Region": "Germany",
"Product": "Apple",
"Units": "51"
},
{
"Region": "Denmark",
"Product": "Apple",
"Units": "99"
},
{
"Region": "Germany",
"Product": "Orange",
"Units": "66"
},
{
"Product": "Apple",
"Units": "51"
}
]
}
{
a: to_dictionary(simpleArray, join('', ['key', to_string(@)]), @),
b: to_dictionary(objectArray, &Region, &@.Product)
}
{
"a": {
"key1": [1],
"key2": [2],
"key3": [3]
},
"b": {
"Germany": ["Apple", "Orange"],
"Denmark": ["Apple"],
"_": ["Apple"]
}
}
Updated about 1 year ago