UNPKG

moy-fp

Version:
25 lines (22 loc) 849 B
import curry from '../Function/curry' import update from '../List/update' import assoc from './assoc' /** * [k] -> v -> {k: v} -> {k: v} */ const assocPath = curry( (paths, value, obj) => { const key = paths[0], length = paths.length return length === 0 ? obj : length === 1 ? Number.isInteger(key) ? update(key, value, obj) : assoc(key, value, obj) : Number.isInteger(key) ? update(key, assocPath(paths.slice(1), value, obj !== null && typeof obj === 'object' && Object.hasOwnProperty.call(obj, key) ? obj[key] : []), obj) : assoc(key, assocPath(paths.slice(1), value, obj !== null && typeof obj === 'object' && Object.hasOwnProperty.call(obj, key) ? obj[key] : {}), obj) } ) export default assocPath