Files
lodash/assignWith.js
John-David Dalton 6cb3460fce Remove semicolons.
2017-02-05 22:22:04 -08:00

36 lines
1.2 KiB
JavaScript

import copyObject from './.internal/copyObject.js'
import createAssigner from './.internal/createAssigner.js'
import keys from './keys.js'
/**
* This method is like `assign` except that it accepts `customizer`
* which is invoked to produce the assigned values. If `customizer` returns
* `undefined`, assignment is handled by the method instead. The `customizer`
* is invoked with five arguments: (objValue, srcValue, key, object, source).
*
* **Note:** This method mutates `object`.
*
* @since 4.0.0
* @category Object
* @param {Object} object The destination object.
* @param {...Object} sources The source objects.
* @param {Function} [customizer] The function to customize assigned values.
* @returns {Object} Returns `object`.
* @see assignInWith
* @example
*
* function customizer(objValue, srcValue) {
* return isUndefined(objValue) ? srcValue : objValue
* }
*
* const defaults = partialRight(assignWith, customizer)
*
* defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 })
* // => { 'a': 1, 'b': 2 }
*/
const assignWith = createAssigner((object, source, srcIndex, customizer) => {
copyObject(source, keys(source), object, customizer)
})
export default assignWith