您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
Sven Slootweg 90c3a2a083 Initial commit; v1.0.0 4 年前
README.md Initial commit; v1.0.0 4 年前
example.js Initial commit; v1.0.0 4 年前
index.js Initial commit; v1.0.0 4 年前
package.json Initial commit; v1.0.0 4 年前

README.md

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.