1.0.3 • Published 5 years ago

maplicious v1.0.3

Weekly downloads
46
License
MIT
Repository
github
Last release
5 years ago

super-map

An Extended Map (with some array methods)

Install

As normal, you can use npm

npm i super-map

or yarn

yarn super-map

Don't forget to use --save/add do add the dependency to your project.

Usage

You can use SuperMap as a normal Map, but import it first ;)

import SuperMap from 'super-map';

NOTE: If you like, you can just import as Map, and use it where you were already using the native Map (import Map from 'super-map';)

After this, just use as you would use the native Map:

const superMap = new SuperMap();
const array = [1, 2, 3];
const object = { asd: 123, qwe: 456 };

superMap.set(array, object);
console.log(superMap.size); // 1
console.log(superMap.has(array)); // true
const value = superMap.get(array);
console.log(value === object); // true
console.log(superMap.delete('potatoes')); // false
superMap.forEach(console.log);
// { asd: 123, qwe: 456 }, [1, 2, 3], SuperMap
for (const entry of superMap.entries()) {
	console.log(entry); // [[1, 2, 3], { asd: 123, qwe: 456 }]
}
superMap.clear();
console.log(superMap.size); // 0

Array like

But, with SuperMap you can use some Array methods.

superMap.find((value, key, self) => key === array);
// [[1, 2, 3], { asd: 123, qwe: 456 }]
superMap.filter((value, key, self) => key === array);
// SuperMap instance with the filtered entries
superMap.reduce(
	(acc, value, key, self) => acc + value.asd + value.qwe,
	0
);
// 579
superMap.map((value, key, self) => value);
// [{ asd: 123, qwe: 456 }]

HINT: The map method works well with frameworks like reactjs ;)

Properties & Methods

PropertiesDescription
sizesimilar Map.prototype.size
lengthsimilar Array.prototype.length
MethodsDescription
clearsimilar Map.prototype.clear
deletesimilar Map.prototype.delete
entriessimilar Map.prototype.entries
forEachsimilar Map.prototype.forEach
getsimilar Map.prototype.get
hassimilar Map.prototype.has
keyssimilar Map.prototype.keys
setsimilar Map.prototype.set
valuessimilar Map.prototype.values
@@iteratorsimilar Map.prototype[@@iterator]
filter*similar Array.prototype.filter
find*similar Array.prototype.find
map*similar Array.prototype.map
reduce*similar Array.prototype.reduce

* on all Array like methods, the callback receives the key instead of index.

TODO

  • Tests, of course
  • Implement more Array like methods (e.g. concat, every, some and sort)