diff options
Diffstat (limited to 'node_modules/lodash/omit.js')
-rw-r--r-- | node_modules/lodash/omit.js | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/node_modules/lodash/omit.js b/node_modules/lodash/omit.js index ecc809731..97f5f546f 100644 --- a/node_modules/lodash/omit.js +++ b/node_modules/lodash/omit.js @@ -3,6 +3,7 @@ var arrayMap = require('./_arrayMap'), baseUnset = require('./_baseUnset'), castPath = require('./_castPath'), copyObject = require('./_copyObject'), + customOmitClone = require('./_customOmitClone'), flatRest = require('./_flatRest'), getAllKeysIn = require('./_getAllKeysIn'); @@ -36,16 +37,16 @@ var omit = flatRest(function(object, paths) { if (object == null) { return result; } - var bitmask = CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG; + var isDeep = false; paths = arrayMap(paths, function(path) { path = castPath(path, object); - bitmask |= (path.length > 1 ? CLONE_DEEP_FLAG : 0); + isDeep || (isDeep = path.length > 1); return path; }); - copyObject(object, getAllKeysIn(object), result); - result = baseClone(result, bitmask); - + if (isDeep) { + result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); + } var length = paths.length; while (length--) { baseUnset(result, paths[length]); |