“2”: The Type Conversion Library
A Node.js module for converting between various JavaScript types: arrays, iterators, maps, numbers, objects, and strings.
const {toArray, toIterator, toMap, toNumber, toObject, toString} = require('2')
let data = {a: 1, b: 2}
data = toMap(data)
data = toArray(data)
data = toObject(data)
data = toIterator(data)
data = toArray(data)
data = toMap(data)
data = toObject(data)
data = '1.23'
data = toNumber(data)
data = toString(data)
Installation
npm install 2 --save
Usage
Requiring the Functions
You can require needed functions via a destructuring assignment:
const {toArray, toIterator, toMap, toNumber, toObject, toString} = require('2')
Or you can require individual functions via submodules:
const toArray = require('2/array')
const toIterator = require('2/iterator')
const toMap = require('2/map')
const toNumber = require('2/number')
const toObject = require('2/object')
const toString = require('2/string')
Converting to Arrays
const toArray = require('2/array')
let map = new Map()
map.set('a', 1)
map.set('b', 2)
toArray(map)
toArray(map.values())
toArray({a: 1, b: 2})
toArray({0: 'first', 1: 'second'}, {detectIndexKeys: true})
toArray('test')
Converting to Iterators
const toIterator = require('2/iterator')
let iterator = toIterator({a: 1, b: 2})
iterator.next().value
iterator.next().value
iterator.next().done
toIterator('test').next().value
Converting to Maps
const toMap = require('2/map')
toMap([['a', 1], ['b', 2]])
map.get('a')
map.get('b')
let map = toMap(['a', 'b'])
map.get(0)
map.get(1)
map = toMap({a: 1, b: 2})
map.get('a')
map.get('b')
Converting to Numbers
const toNumber = require('2/number')
toNumber('1.2')
toNumber(Infinity)
toNumber(NaN)
toNumber('not a number')
toNumber('not a number', {fallback: 100})
toNumber('not a number', {fallback: null})
toNumber('4.7')
toNumber('4.7', {round: true})
toNumber(Infinity)
toNumber(Infinity, {finite: false})
let numberObject = new Number(123)
typeof numberObject
typeof toNumber(numberObject)
Converting to Objects
const toObject = require('2/object')
let obj = toObject([['a', 1], ['b', 2]])
obj.a
obj.b
let obj = toObject(['first', 'second'])
Object.keys(obj).length
obj[0]
obj[1]
let obj = toObject(['first', 'second'], {mirror: true})
Object.keys(obj).length
obj.first
obj.second
let map = new Map()
map.set('key1', 'value1')
map.set('key2', 'value2')
let obj = toObject(map)
obj.key1
obj.key2
Converting to Strings
const toString = require('2/string')
toString(123)
toString(-0)
toString(true)
toString(false)
toString(undefined)
toString(null)
toString(Infinity)
toString(NaN)
toString({})
toString([])
toString(function () {})
toString(Symbol('test'))
String(true)
String(false)
String(undefined)
String(null)
String(Infinity)
String(NaN)
String({})
String([])
String(function () {})
String(Symbol('test'))
toString(undefined)
toString(undefined, {fallback: 'N/A'})
toString(undefined, {fallback: null})
let stringObject = new String('test')
typeof stringObject
typeof toString(stringObject)