Skip to main content
Module

x/ramda/source/internal/_modify.js

:ram: Practical functional Javascript
Latest
File
import _isArray from './_isArray.js';import _isInteger from './_isInteger.js';
/** * Makes a shallow clone of an object, applying the given fn to the specified * property with the given value. Note that this copies and flattens prototype * properties onto the new object as well. All non-primitive properties are * copied by reference. * * @private * @param {String|Number} prop The property name to set * @param {Function} fn The function to apply to the property * @param {Object|Array} obj The object to clone * @return {Object|Array} A new object equivalent to the original except for the changed property. */export default function _modify(prop, fn, obj) { if (_isInteger(prop) && _isArray(obj)) { var arr = [].concat(obj); arr[prop] = fn(arr[prop]); return arr; }
var result = {}; for (var p in obj) { result[p] = obj[p]; } result[prop] = fn(result[prop]); return result;}