list_join
Join lists of objects
Definition
array list_join(array[object] $leftArray, array[object] $rightArray, &leftEvaluateBy, &rightEvaluateBy)
Joins the objects of two arrays of objects. &leftEvaluateBy
and &rightEvaluateBy
are treated as object identifiers; the objects that have matching values of &leftEvaluateBy
and &rightEvaluateBy
will be joined into a single object with properties left
and right
, whose values are arrays of all the objects in $leftArray
and $rightArray
respectively, that have the same value of &leftEvaluateBy
and &rightEvaluateBy
. The objects also have a property __index
, which is the position of the object in the resulting list.
Entries that do not have matching keys, either in $leftArray
or $rightArray
, are shown in the result with no matching counterpart.
Parameters
array[object] $leftArray
Left array to join.
array[object] $rightArray
Right array to join.
&leftEvaluateBy
Identifier key for the objects in the left array.
&rightEvaluateBy
Identifier key for the objects in the right array.
Returns
array
Array where the objects with matching &EvaluateBy
values have been joined together.
Examples
{
"people": [
{ "name": "Messi", "teamId": 1 },
{ "name": "Iniesta", "teamId": 1 },
{ "name": "Ronaldo", "teamId": 2 },
{ "name": "Rooney", "teamId": 3 }
],
"teams": [
{ "name": "Barcelona", "id": 1 },
{ "name": "Real Madrid", "id": 2 },
{ "name": "Real", "id": 2 },
{ "name": "Liverpool", "id": 10 }
]
}
{
list_join: list_join(people, teams, &teamId, &id)
}
{
"list_join":
[
{
"left":[{"name": "Messi", "teamId": 1}, {"name": "Iniesta", "teamId": 1}],
"right":[{"name": "Barcelona", "id": 1}],
"__index": 0
},
{
"left":[{"name": "Ronaldo", "teamId": 2}],
"right":[{"name": "Real Madrid", "id": 2}, {"name": "Real", "id": 2}],
"__index": 1
},
{
"left":[{"name":"Rooney", "teamId": 3}],
"right":[],
"__index": 2
},
{
"left":[],"right":[{"name":"Liverpool","id": 10}],
"__index": 3
}
]
}
Updated about 1 year ago