select-object-keys.js 953 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import {InvalidArgumentError} from '../errors/index.js';
  2. /**
  3. * Select object keys.
  4. *
  5. * @param obj
  6. * @param keys
  7. * @return {object}
  8. */
  9. export function selectObjectKeys(obj, keys) {
  10. if (!obj || typeof obj !== 'object')
  11. throw new InvalidArgumentError(
  12. 'A first argument of selectObjectKeys ' +
  13. 'should be an Object, but %v given.',
  14. obj,
  15. );
  16. if (!Array.isArray(keys))
  17. throw new InvalidArgumentError(
  18. 'A second argument of selectObjectKeys ' +
  19. 'should be an Array of String, but %v given.',
  20. keys,
  21. );
  22. keys.forEach(key => {
  23. if (typeof key !== 'string')
  24. throw new InvalidArgumentError(
  25. 'A second argument of selectObjectKeys ' +
  26. 'should be an Array of String, but %v given.',
  27. key,
  28. );
  29. });
  30. const result = {};
  31. const allKeys = Object.keys(obj);
  32. allKeys.forEach(key => {
  33. if (keys.includes(key)) result[key] = obj[key];
  34. });
  35. return result;
  36. }