generate-lookup-table
v1.0.0
Published
Generates a (fast!) lookup table or index from any array of items.
Downloads
2
Maintainers
Readme
generate-lookup-table
Generates a (fast!) lookup table or index from any array of items.
When to use this: When you might otherwise be looping through an array many times (eg. using Array#find
), trying to locate an item(s) with a particular property.
If you'd otherwise only loop through the array once, it's probably faster not to use this library, and just do the loop - building a lookup table, while still quite fast in the bigger picture, takes time.
License, donations, and other boilerplate
Licensed under either the WTFPL or CC0, at your choice. In practice, that means it's more or less public domain, and you can do whatever you want with it. Giving credit is not required, but still very much appreciated! I'd love to hear from you if this module was useful to you.
Creating and maintaining open-source modules is a lot of work. A donation is also not required, but much appreciated! You can donate here.
Usage
"use strict";
const generateLookupTable = require("generate-lookup-table");
// Thanks to https://gist.github.com/nanotaboada/6396437 for the sample data!
let items = [
{ name: "Eloquent JavaScript, Second Edition", tags: [ "javascript", "No Starch Press" ] },
{ name: "Learning JavaScript Design Patterns", tags: [ "javascript", "O'Reilly Media" ] },
{ name: "Speaking JavaScript", tags: [ "javascript", "O'Reilly Media" ] },
{ name: "Programming JavaScript Applications", tags: [ "javascript", "O'Reilly Media" ] },
{ name: "Understanding ECMAScript 6", tags: [ "javascript", "No Starch Press" ] },
{ name: "You Don't Know JS", tags: [ "javascript", "O'Reilly Media" ] },
{ name: "Git Pocket Guide", tags: [ "git", "O'Reilly Media" ] },
{ name: "Designing Evolvable Web APIs with ASP.NET", tags: [ "asp.net", "O'Reilly Media" ] },
];
let lookupTable = generateLookupTable(items, (item) => item.tags);
console.log(lookupTable.get("git"));
/* Output:
[ { name: 'Git Pocket Guide', tags: [ 'git', 'O\'Reilly Media' ] } ]
*/
console.log(lookupTable.get("No Starch Press"));
/* Output:
[ { name: 'Eloquent JavaScript, Second Edition',
tags: [ 'javascript', 'No Starch Press' ] },
{ name: 'Understanding ECMAScript 6',
tags: [ 'javascript', 'No Starch Press' ] } ]
*/
API
generateLookupTable(items, keyFunction)
Generates a lookup table for the given set of items
, using the keyFunction
to determine what key(s) each item should be registered for.
- items: The array of items to index.
- keyFunction(item): A function that, given an
item
as its argument, returns the key(s) for that item. The function may return either a single key, an array of them, or nothing at all.
Returns a Map
that maps from a key (as returned from the keyFunction
) to all items that returned that particular key.
Changelog
v1.0.0 (February 21, 2020)
Initial release.