lookup

0.1.0 • Public • Published

lookup

browser support

API

module.exports = function lookup (hash=pluck("id"), onCollision="last")

lookup creates a reducing function (suitable for passing to Array.prototype.reduce or reducible) that builds a lookup table using the provided hash function. The function returned looks something like this:

function reducer (mapping, object) {
  mapping[hash(object)] = object
  return mapping
}

Creating a lookup on a property.

When the hash parameter is a string, the corresponding property name will be used as the hash value of each object. E.g. lookup('name') will return a hash function something like this:

function reducer (mapping, object) {
  mapping[object['name']] = object
  return mapping
}

Collision Handling

The second parameter to lookup determines what happens when two objects have the same hash value. There are currently 4 options:

  • 'last' - This is the default. If an object hashes to a key that is already used, the old value is overwritten.
  • 'first' - The opposite of 'last'. If an object hashes to a key that is already used, the new value is discarded.
  • 'array' - Keep all values for each object in the order they appeared. The values in the final mapping will alway be arrays.
  • 'concat' - Keep all values for each object in the order they appeared. If a key was only seen once, it won't be wrapped in an array.

lookup.reduce(arr, hash=pluck("id"), onCollision="last")

A short-hand way of writing arr.reduce(lookup(hash, onCollision), {}).

lookup.writableStream(hash=pluck("id"), onCollision="last", callback)

Returns a writable stream that will use the reducer function to aggregate objects written to it into a single mapping. While the first two arguments are optional a callback must be provided. The callback will be called with the complete lookup table when the source stream ends.

License

BSD (2 clause)

Readme

Keywords

Package Sidebar

Install

npm i lookup

Weekly Downloads

1,578

Version

0.1.0

License

BSD-2-Clause

Last publish

Collaborators

  • grncdr