omit.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536
  1. var arrayMap = require('./_arrayMap'),
  2. baseDifference = require('./_baseDifference'),
  3. baseFlatten = require('./_baseFlatten'),
  4. basePick = require('./_basePick'),
  5. getAllKeysIn = require('./_getAllKeysIn'),
  6. rest = require('./rest'),
  7. toKey = require('./_toKey');
  8. /**
  9. * The opposite of `_.pick`; this method creates an object composed of the
  10. * own and inherited enumerable string keyed properties of `object` that are
  11. * not omitted.
  12. *
  13. * @static
  14. * @since 0.1.0
  15. * @memberOf _
  16. * @category Object
  17. * @param {Object} object The source object.
  18. * @param {...(string|string[])} [props] The property identifiers to omit.
  19. * @returns {Object} Returns the new object.
  20. * @example
  21. *
  22. * var object = { 'a': 1, 'b': '2', 'c': 3 };
  23. *
  24. * _.omit(object, ['a', 'c']);
  25. * // => { 'b': '2' }
  26. */
  27. var omit = rest(function(object, props) {
  28. if (object == null) {
  29. return {};
  30. }
  31. props = arrayMap(baseFlatten(props, 1), toKey);
  32. return basePick(object, baseDifference(getAllKeysIn(object), props));
  33. });
  34. module.exports = omit;