JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q12707F
  • License MIT

Find and filter through objects in maps faster using pointers/indexes

Package Exports

  • pointed-map
  • pointed-map/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (pointed-map) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Pointed Map

The much faster way of filtering and finding objects through Maps

Implement with your project

npm i pointed-map --save

Initiation

const PointedMap = require('pointed-map');

// The properties that the pointed map should make pointers to
const map = new PointedMap(null, ['bar']);

// PointedMap extends Map, use anything as a key
// Values MUST be objects

const foo = {
    bar: 'Lorem'
};

map.set('anykey', foo);

// Returns the first matching value
map.getOneBy('bar', 'Lorem');

// Returns all matching values in an array
map.getBy('bar', 'Lorem');

// Returns all matching values in a new PointedMap
// with the same pointed properties
map.filterBy('bar', 'Lorem');

Good to know

  • getBy() and getOneBy() have the same speed

Usage

// Method 1:
const map = new PointedMap(null, ['bar']);

map.set('anykey', { foo: 'ipsum', bar: 'Lorem' });

// Method 2:
const entries = [
    // [ key, value ]
    ['anykey', { foo: 'ipsum', bar: 'Lorem' }]
];

const map = new PointedMap(entries, ['foo', 'bar']);

.getOneBy(property, value)

Arguments:

  • property: string
  • value: any

Returns: object || undefined

const got = map.getOneBy('bar', 'Lorem');
console.log(got.foo);

.getBy(property, value)

Arguments:

  • property: string
  • value: any

Returns: Array<object> || undefined

map.getBy('bar', 'Lorem').forEach(x => {
    console.log(x.foo);
});

.filterBy(property, value)

Arguments:

  • property: string
  • value: any

Returns: PointedMap<key, object>

Info: The property will not be pointed to in the returned PointedMap

getBy() will always be faster than filterBy()

const filtered = map.filterBy('bar', 'Lorem');
const got = filtered.getOneBy('foo', 'ipsum');
console.log(got);