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.

index.js 557B

1234567891011121314151617181920212223242526272829303132333435
  1. const {
  2. keyInObj,
  3. allKeys,
  4. optimizeCb,
  5. isFunction,
  6. flatten
  7. } = require('@jonkemp/package-utils');
  8. module.exports = (obj, ...keys) => {
  9. const result = {};
  10. let [iteratee] = keys;
  11. if (!obj) {
  12. return result;
  13. }
  14. if (isFunction(iteratee)) {
  15. if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);
  16. keys = allKeys(obj);
  17. } else {
  18. iteratee = keyInObj;
  19. keys = flatten(keys);
  20. obj = Object(obj);
  21. }
  22. keys.forEach(key => {
  23. const value = obj[key];
  24. if (iteratee(value, key, obj)) {
  25. result[key] = value;
  26. }
  27. });
  28. return result;
  29. };