import { forEach } from "."; import { curry2 } from "../function"; /** * Creates an object whose keys are determined by `keyFn`. * Each element of the list will be assigned in the object based on the key generated. * If the key function returns the same values for 2 elements from the list, * the one that's later in the list will overwrite the earlier one. * This function is useful if you have an array of objects that you want to convert to an object. * * @param {function} keyFn * @param {any[]} list * @returns {object} */ const keyWith = (keyFn, list) => { const object = {}; forEach((value, index, ls) => { object[keyFn(value, index, ls)] = value; }, list); return object; }; export default curry2(keyWith);