---
agentTools:
  projectIndex: https://nativescript-enumerable.readme.io/llms.txt
---

# groupJoin

Correlates the elements of a sequence and another based on matching keys and groups them.

[block:code]
{
  "codes": [
    {
      "code": "var createPerson = function(name) {\n    return {\n        name: name\n    };\n};\n\nvar createPet = function(name, owner) {\n    return {\n        name: name,\n        owner: owner\n    };\n};\n\nvar persons = [\n    createPerson(\"Tanja\"),\n    createPerson(\"Marcel\"),\n    createPerson(\"Yvonne\"),\n    createPerson(\"Josefine\")\n];\n\nvar pets = [\n    createPet(\"Gina\", persons[1]),\n    createPet(\"Schnuffi\", persons[1]),\n    createPet(\"Schnuffel\", persons[2]),\n    createPet(\"WauWau\", persons[0]),\n    createPet(\"Lulu\", persons[3]),\n    createPet(\"Asta\", persons[1])\n];\n\n// [0] 'Owner: Tanja; Pets: WauWau, Sparky'\n// [1] 'Owner: Marcel; Pets: Gina, Schnuffi, Asta'\n// [2] 'Owner: Yvonne; Pets: Schnuffel'\n// [3] 'Owner: Josefine; Pets: Lulu'\nEnumerable.fromArray(persons)\n          .groupJoin(pets,\n                     'person => person.name',\n                     'pet => pet.owner.name',\n                     function(person, petsOfPerson) {\n                         var petList = petsOfPerson\n                             .select('pet => pet.name')\n                             .aggregate(function(result, petName) {\n                                            return result += \", \" + petName;\n                                        });\n\n                         return 'Owner: ' + person.name + '; Pets: ' + petList;\n                     });",
      "language": "javascript"
    }
  ]
}
[/block]