pick.js 664 B

1234567891011121314151617181920212223242526
  1. var isStr = require('./isStr');
  2. var isArr = require('./isArr');
  3. var contain = require('./contain');
  4. var each = require('./each');
  5. exports = function(obj, filter, omit) {
  6. if (isStr(filter)) filter = [filter];
  7. if (isArr(filter)) {
  8. var keys = filter;
  9. filter = function(val, key) {
  10. return contain(keys, key);
  11. };
  12. }
  13. var ret = {};
  14. var iteratee = function(val, key) {
  15. if (filter(val, key)) ret[key] = val;
  16. };
  17. if (omit) {
  18. iteratee = function(val, key) {
  19. if (!filter(val, key)) ret[key] = val;
  20. };
  21. }
  22. each(obj, iteratee);
  23. return ret;
  24. };
  25. module.exports = exports;