@kingjs/linq.join

Generates a sequence of elements composed of elements from two sequences that share a common key.

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
04Jun 21, 2021Jul 20, 2018Minified + gzip package size for @kingjs/linq.join in KB

Readme

@kingjs/linq.join

Generates a sequence of elements composed of elements from two sequences that share a common key.

Usage

Match people Alice, Bob, and Chris to their pets Fluffy, Spike, Snuggles, and Butch like this:

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

var result = join.call(
  sequence(
    { name: `Alice`, key: 0 },
    { name: `Bob`, key: 1 },
    { name: `Chris`, key: 2 }, // no pets
  ), 
  sequence(
    { name: `Fluffy`, ownerKey: 0 },
    { name: `Spike`, ownerKey: 0 },
    { name: `Snuggles`, ownerKey: 1 },
    { name: `Butch`, ownerKey: 3 }, // no owner
  ),
  function(person) { return person.key; },
  function(animal) { return animal.ownerKey; },
  function(owner, pet) { return owner.name + ' owns ' + pet.name; },
)

toArray.call(result);

result:

[ 
  'Alice owns Fluffy',
  'Alice owns Spike',
  'Bob owns Snuggles',
]

API

declare function join(
  this: Enumerable,
  outer: Enumerable,
  innerKeySelector: (innerElement) => any,
  outerKeySelector: (outerElement) => any,
  resultSelector: (innerElement, outerElement) => any
): any

Interfaces

  • Enumerable: See @kingjs/enumerable.define.

    Parameters

  • this: The outer sequence.
  • inner: The inner sequence.
  • outerKeySelector: Selects a key from elements of the outer sequence.
  • innerKeySelector: Selects a key from elements of the inner sequence.
  • resultSelector: Composes a result element from an inner and an outer element which share a common key.
    • innerElement: The inner element.
    • outerElement: The outer element.

      Return Value

      A sequence of elements composed of elements from two sequences that share a common key.

      Remarks

      Elements are deemed equal if their key's stringified representations are the same.

Matching elements are generated in the order their inner element, then outer element, occur in their respective sequences.

Install

With npm installed, run

$ npm install @kingjs/linq.join

Acknowledgments

Like Enumerable.Join.

License

MIT

Analytics

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.