12345678910111213141516171819202122232425262728293031 |
- 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;
- }
|