1 var baseMerge = require('../internal/baseMerge'),
2 createAssigner = require('../internal/createAssigner');
5 * Recursively merges own enumerable properties of the source object(s), that
6 * don't resolve to `undefined` into the destination object. Subsequent sources
7 * overwrite property assignments of previous sources. If `customizer` is
8 * provided it's invoked to produce the merged values of the destination and
9 * source properties. If `customizer` returns `undefined` merging is handled
10 * by the method instead. The `customizer` is bound to `thisArg` and invoked
11 * with five arguments: (objectValue, sourceValue, key, object, source).
16 * @param {Object} object The destination object.
17 * @param {...Object} [sources] The source objects.
18 * @param {Function} [customizer] The function to customize assigned values.
19 * @param {*} [thisArg] The `this` binding of `customizer`.
20 * @returns {Object} Returns `object`.
24 * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
28 * 'data': [{ 'age': 36 }, { 'age': 40 }]
31 * _.merge(users, ages);
32 * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
34 * // using a customizer callback
36 * 'fruits': ['apple'],
37 * 'vegetables': ['beet']
41 * 'fruits': ['banana'],
42 * 'vegetables': ['carrot']
45 * _.merge(object, other, function(a, b) {
50 * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
52 var merge = createAssigner(baseMerge);
54 module.exports = merge;