webdriverio-automation
Version:
WebdriverIO-Automation android ios project
59 lines (44 loc) • 1.49 kB
Markdown
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:
```js
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`:
```js
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'}}
```