https://github.com/mrtomatolegit/pointed-map
Find and filter through objects in maps faster using pointers/indexes
https://github.com/mrtomatolegit/pointed-map
Last synced: 25 days ago
JSON representation
Find and filter through objects in maps faster using pointers/indexes
- Host: GitHub
- URL: https://github.com/mrtomatolegit/pointed-map
- Owner: mrTomatolegit
- License: mit
- Created: 2021-05-20T05:55:31.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2022-02-18T20:10:54.000Z (over 3 years ago)
- Last Synced: 2024-10-30T04:50:04.276Z (11 months ago)
- Language: JavaScript
- Size: 97.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Pointed Map
The much faster way of filtering and finding objects through Maps
## Implement with your project
```
npm i pointed-map --save
```## Initiation
```js
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 objectsconst 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
```js
// 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`
```js
const got = map.getOneBy('bar', 'Lorem');
console.log(got.foo);
```### .getBy(property, value)
**Arguments**:
- property: `string`
- value: `any`**Returns**: `Array` || `undefined`
```js
map.getBy('bar', 'Lorem').forEach(x => {
console.log(x.foo);
});
```### .filterBy(property, value)
**Arguments**:
- property: `string`
- value: `any`**Returns**: `PointedMap`
**Info**: The property will not be pointed to in the returned PointedMap
`getBy()` will **always** be faster than `filterBy()`
```js
const filtered = map.filterBy('bar', 'Lorem');
const got = filtered.getOneBy('foo', 'ipsum');
console.log(got);
```