Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80742 views
1
var baseMerge = require('../internal/baseMerge'),
2
createAssigner = require('../internal/createAssigner');
3
4
/**
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 is 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).
12
*
13
* @static
14
* @memberOf _
15
* @category Object
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`.
21
* @example
22
*
23
* var users = {
24
* 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]
25
* };
26
*
27
* var ages = {
28
* 'data': [{ 'age': 36 }, { 'age': 40 }]
29
* };
30
*
31
* _.merge(users, ages);
32
* // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }
33
*
34
* // using a customizer callback
35
* var object = {
36
* 'fruits': ['apple'],
37
* 'vegetables': ['beet']
38
* };
39
*
40
* var other = {
41
* 'fruits': ['banana'],
42
* 'vegetables': ['carrot']
43
* };
44
*
45
* _.merge(object, other, function(a, b) {
46
* if (_.isArray(a)) {
47
* return a.concat(b);
48
* }
49
* });
50
* // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }
51
*/
52
var merge = createAssigner(baseMerge);
53
54
module.exports = merge;
55
56