mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-01 15:57:48 +00:00
Ensure _.merge applies a given callback to nested properties. [closes #227]
Former-commit-id: 1a58c178e0ecb9c50512f221b4aed82762709066
This commit is contained in:
@@ -2005,6 +2005,7 @@
|
||||
var callback = args[3],
|
||||
stackA = args[4],
|
||||
stackB = args[5];
|
||||
console.log(object)
|
||||
} else {
|
||||
stackA = [];
|
||||
stackB = [];
|
||||
@@ -2041,9 +2042,10 @@
|
||||
? (isArray(value) ? value : [])
|
||||
: (isPlainObject(value) ? value : {});
|
||||
|
||||
var isShallow;
|
||||
if (callback) {
|
||||
result = callback(value, source);
|
||||
if (typeof result != 'undefined') {
|
||||
if ((isShallow = typeof result != 'undefined')) {
|
||||
value = result;
|
||||
}
|
||||
}
|
||||
@@ -2052,13 +2054,14 @@
|
||||
stackB.push(value);
|
||||
|
||||
// recursively merge objects and arrays (susceptible to call stack limits)
|
||||
if (!callback) {
|
||||
if (!isShallow) {
|
||||
value = merge(value, source, indicatorObject, callback, stackA, stackB);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (callback) {
|
||||
console.log('hi')
|
||||
result = callback(value, source);
|
||||
if (typeof result == 'undefined') {
|
||||
result = source;
|
||||
|
||||
11
test/test.js
11
test/test.js
@@ -1801,8 +1801,15 @@
|
||||
});
|
||||
|
||||
test('should handle merging if `callback` returns `undefined`', function() {
|
||||
var actual = _.merge({ 'a': 1 }, { 'a': 2 }, function() { });
|
||||
deepEqual(actual, { 'a': 2 });
|
||||
var actual = _.merge({ 'a': { 'b': [1, 1] } }, { 'a': { 'b': [0] } }, function() { });
|
||||
deepEqual(actual, { 'a': { 'b': [0, 1] } });
|
||||
});
|
||||
|
||||
test('should defer to `callback` when it returns a value other than `undefined`', function() {
|
||||
var actual = _.merge({ 'a': { 'b': [0, 1] } }, { 'a': { 'b': [2] } }, function(a, b) {
|
||||
return _.isArray(a) ? a.concat(b) : undefined;
|
||||
});
|
||||
deepEqual(actual, { 'a': { 'b': [0, 1, 2] } });
|
||||
});
|
||||
}(1, 2, 3));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user