UNPKG

moy-fp

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