ES6-Mapify
Convert JS Objects to ES6 Maps and vice versa.
ES6 Map
objects are really nice for iteration, but they're not so nice for
directly referencing properties, the way JS Objects are. This is a nice way to
convert back and forth. First, simply use npm
to include es6-mapify
in your
project's dependencies:
npm install -S es6-mapify
Now you can import it and use it like so:
import { mapify } from 'es6-mapify';
// converts basic objects
let myObj = {foo: 'bar'};
let myMap = mapify(myObj);
myMap.get('foo'); // 'bar'
// doesn't do anything to non-objects
mapify('foo'); // 'foo';
mapify(null); // null
// is smart about objects nested inside arrays and other objects
let arrMap = mapify([1, {foo: 'bar'}, 3]);
arrMap[2]; // 3
arrMap[1].get('foo'); // 'bar'
let myMap = mapify({foo: {bar: 'baz'}});
myMap.get('foo').get('bar'); // 'baz';
Of course, you might want to go the other direction too! If you have a Map
and want the corresponding basic JS object, just use demapify
:
import { demapify } from 'mapify';
// converts basic maps
let myMap = new Map();
myMap.set('foo', 'bar');
demapify(myMap); // {foo: 'bar'}
// doesn't do anything to non-objects
demapify(2); // 2
// is smart about nested Maps (and Maps in arrays)
let myMap = new Map()
, myMap2 = new Map();
myMap.set('foo', 'bar');
myMap2.set('baz', 'quux');
myMap.set('inception', myMap2);
demapify(myMap); // {foo: 'bar', inception: {baz: 'quux'}}