@kingjs/linq.group-join

1.0.7 • Public • Published

@kingjs/linq.group-join

Generates a sequence of elements composed of an element in one sequence and a group of elements in another sequence all of which share a common key.

Usage

Join

  • Alice with her pets Fluffy and Spike,
  • Bob with his pet Snuggles, and
  • Chris without any pets

like this:

var groupJoin = require('@kingjs/linq.group-join');
var sequence = require('@kingjs/enumerable.create');
var toArray = require('@kingjs/linq.to-array');

var owners = sequence(
  { name: 'Alice', id: 0 },
  { name: 'Bob', id: 1 },
  { name: 'Chris', id: 2 },
);

var pets = sequence(
  { name: 'Fluffy', ownerId: 0 },
  { name: 'Spike', ownerId: 0 },
  { name: 'Snuggles', ownerId: 1 },
)

var ownersAndPets = groupJoin.call(
  owners,
  pets,
  function(x) { return x.id; },
  function(x) { return x.ownerId; },
  function(x, group) { 
    return {
      owner: x.name,
      pets: toArray.call(group)
    }; 
  }
);

toArray.call(ownersAndPets);

result:

[{
  owner: 'Alice', 
  pets: [
    { name: 'Fluffy', ownerId: 0 },
    { name: 'Spike', ownerId: 0 },
  ],
}, {
  owner: 'Bob', 
  pets: [
    { name: 'Snuggles', ownerId: 1 },
  ],
}, {
  owner: 'Chris', 
  pets: [     
  ],
}]

API

declare function groupJoin(
  this: Enumerable,
  outerEnumerable: Enumerable,
  innerKeySelector: (x) => any,
  outerKeySelector: (x) => any,
  resultSelector: (innerElement, outerPartition) => any
)

Interfaces

Parameters

  • this: The inner sequence whose elements are matched with a partition of the outer sequence.
  • outerEnumerable: The outer sequence whose partitions are joined with elements of the inner sequence.
  • innerKeySelector: Selects a key from elements of the inner sequence.
  • outerKeySelector: Selects a key from an element of the outer sequence which specifies the named partition to which the element belongs.
  • resultSelector: Joins inner elements to an outer partition which shares the same key.
    • innerElement: An inner element.
    • outerPartition: The outer partition that shares the same key as the inner element.

Return Value

A sequence of inner elements joined to partitions of outer elements.

Install

With npm installed, run

$ npm install @kingjs/linq.group-join

Acknowledgments

Like Enumerable.GroupJoin.

License

MIT

Analytics

Readme

Keywords

none

Package Sidebar

Install

npm i @kingjs/linq.group-join

Weekly Downloads

1

Version

1.0.7

License

MIT

Unpacked Size

5.55 kB

Total Files

4

Last publish

Collaborators

  • kingces95