You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
	
	
							57 lines
						
					
					
						
							1.6 KiB
						
					
					
				var arrayMap = require('./_arrayMap'), | 
						|
    baseClone = require('./_baseClone'), | 
						|
    baseUnset = require('./_baseUnset'), | 
						|
    castPath = require('./_castPath'), | 
						|
    copyObject = require('./_copyObject'), | 
						|
    customOmitClone = require('./_customOmitClone'), | 
						|
    flatRest = require('./_flatRest'), | 
						|
    getAllKeysIn = require('./_getAllKeysIn'); | 
						|
 | 
						|
/** Used to compose bitmasks for cloning. */ | 
						|
var CLONE_DEEP_FLAG = 1, | 
						|
    CLONE_FLAT_FLAG = 2, | 
						|
    CLONE_SYMBOLS_FLAG = 4; | 
						|
 | 
						|
/** | 
						|
 * The opposite of `_.pick`; this method creates an object composed of the | 
						|
 * own and inherited enumerable property paths of `object` that are not omitted. | 
						|
 * | 
						|
 * **Note:** This method is considerably slower than `_.pick`. | 
						|
 * | 
						|
 * @static | 
						|
 * @since 0.1.0 | 
						|
 * @memberOf _ | 
						|
 * @category Object | 
						|
 * @param {Object} object The source object. | 
						|
 * @param {...(string|string[])} [paths] The property paths to omit. | 
						|
 * @returns {Object} Returns the new object. | 
						|
 * @example | 
						|
 * | 
						|
 * var object = { 'a': 1, 'b': '2', 'c': 3 }; | 
						|
 * | 
						|
 * _.omit(object, ['a', 'c']); | 
						|
 * // => { 'b': '2' } | 
						|
 */ | 
						|
var omit = flatRest(function(object, paths) { | 
						|
  var result = {}; | 
						|
  if (object == null) { | 
						|
    return result; | 
						|
  } | 
						|
  var isDeep = false; | 
						|
  paths = arrayMap(paths, function(path) { | 
						|
    path = castPath(path, object); | 
						|
    isDeep || (isDeep = path.length > 1); | 
						|
    return path; | 
						|
  }); | 
						|
  copyObject(object, getAllKeysIn(object), result); | 
						|
  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]); | 
						|
  } | 
						|
  return result; | 
						|
}); | 
						|
 | 
						|
module.exports = omit;
 | 
						|
 |