mirror of
https://github.com/whoisclebs/lodash.git
synced 2026-02-07 18:07:49 +00:00
Ensure _.omit doesn’t mutate object with deep paths. [closes #2912]
This commit is contained in:
@@ -5632,8 +5632,8 @@
|
|||||||
* @param {string} key The key of the property to inspect.
|
* @param {string} key The key of the property to inspect.
|
||||||
* @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
|
* @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.
|
||||||
*/
|
*/
|
||||||
function customOmitClone(value, key) {
|
function customOmitClone(value) {
|
||||||
return (key !== undefined && isPlainObject(value)) ? undefined : value;
|
return isPlainObject(value) ? undefined : value;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
10
test/test.js
10
test/test.js
@@ -16450,6 +16450,16 @@
|
|||||||
|
|
||||||
assert.deepEqual(_.omit(object, args), { 'b': 2, 'd': 4 });
|
assert.deepEqual(_.omit(object, args), { 'b': 2, 'd': 4 });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
QUnit.test('should not mutate `object`', function(assert) {
|
||||||
|
assert.expect(4);
|
||||||
|
|
||||||
|
lodashStable.each(['a', ['a'], 'a.b', ['a.b']], function(path) {
|
||||||
|
var object = { 'a': { 'b': 2 } };
|
||||||
|
_.omit(object, path);
|
||||||
|
assert.deepEqual(object, { 'a': { 'b': 2 } });
|
||||||
|
});
|
||||||
|
});
|
||||||
}());
|
}());
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
/*--------------------------------------------------------------------------*/
|
||||||
|
|||||||
Reference in New Issue
Block a user