An Extended Map (with some array methods)
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.
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
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 | Description |
---|---|
size |
similar Map.prototype.size |
length |
similar Array.prototype.length |
Methods | Description |
---|---|
clear |
similar Map.prototype.clear |
delete |
similar Map.prototype.delete |
entries |
similar Map.prototype.entries |
forEach |
similar Map.prototype.forEach |
get |
similar Map.prototype.get |
has |
similar Map.prototype.has |
keys |
similar Map.prototype.keys |
set |
similar Map.prototype.set |
values |
similar Map.prototype.values |
@@iterator |
similar 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 . |
- Tests, of course
- Implement more Array like methods (e.g.
concat
,every
,some
andsort
)