UNPKG

arr-to-obj

Version:

convert arrays to objects (arr to obj)

67 lines (57 loc) 1.58 kB
const is = require('izz') function defaultKeyFn({val, i, array, obj}) { // if (typeof val === 'object') { // obj = Object.assign(obj, val) // } else if (typeof val === 'string') { } return val } function defaultValFn({val, i, array, obj}) { return val } // array items become object values, // fn maps items to keys function arrToObj(array, keyValFns = {}) { const key = keyValFns.keyFn || defaultKeyFn const val = keyValFns.valFn || defaultValFn const obj = {} if (!is.arr(array) && is.obj(array)) return array const len = array.length for (let i = 0; i < len; i++) { const _val = val({val: array[i], i, array, obj}) const _key = key({val: _val, i, array, obj}) obj[_key] = _val } return obj } // @example: // var array = ['eh', 'canada'] // valAsKey(array, 'woot') // {eh: 'woot', canada: 'woot'} function valAsKey(array, fn) { return arrToObj(array, { valFn: () => undefined, keyFn: ({i}) => typeof fn === 'function' ? fn(i) : (fn || array[i]), }) } // @example: // var array = ['eh', 'canada'] // valAsVal(array) // {'1': 'eh', '2': 'canada'} function valAsVal(array, fn) { return arrToObj(array, { valFn: ({i, val}) => typeof fn === 'function' ? fn(val, i) : (fn || i), keyFn: () => undefined, }) } // is default... function valAsKeyAndVal(array, fn) { return arrToObj(array, { valFn: defaultValFn, keyFn: defaultKeyFn, }) } // function valAsValAndKey(array, fn) {} arrToObj.valAsKey = valAsKey arrToObj.valAsVal = valAsVal arrToObj.valAsKeyAndVal = valAsKeyAndVal module.exports = arrToObj