UNPKG

@kitmi/utils

Version:

A JavaScript utility library for both server and browser

34 lines (28 loc) 914 B
/** * Convert an array into a k-v paired object. * @alias array.arrayToObject * @param {*} arrayOfObjects * @param {*} keyGetter * @param {*} valueGetter * @returns {Object} */ const arrayToObject = (arrayOfObjects, keyGetter, valueGetter) => { if (arrayOfObjects == null) { return null; } if (!Array.isArray(arrayOfObjects)) { throw new Error('The target argument should be an array.'); } const _keyGetter = typeof keyGetter === 'function' ? keyGetter : (obj) => obj[keyGetter]; const _valueGetter = valueGetter == null ? (obj) => obj : typeof valueGetter === 'function' ? valueGetter : (obj) => obj[valueGetter]; return arrayOfObjects.reduce((table, obj, index) => { table[_keyGetter(obj, index)] = _valueGetter(obj, index); return table; }, {}); }; export default arrayToObject;