Source

utils/objects.js

  1. /**
  2. * This file contains a series of functionalities related to getting and
  3. * setting from a objects.
  4. * It is based on lodash library.
  5. * @category Utils
  6. * @subcategory Global
  7. * @module objects
  8. */
  9. /**
  10. * Port of lodash function set.
  11. * @see https://lodash.com/docs/4.17.4#set
  12. * @param {Object} obj Target object.
  13. * @param {string} path Path to use.
  14. * @param {any} val Vale to set.
  15. */
  16. export function set(obj, path, val) {
  17. if (typeof path === "string") path = path.split(".");
  18. if (path.length > 1) {
  19. if (obj[path[0]] === undefined) obj[path[0]] = {};
  20. set(obj[path[0]], path.slice(1), val);
  21. } else obj[path[0]] = val;
  22. return obj;
  23. }
  24. /**
  25. * Port of lodash function get.
  26. * @see https://lodash.com/docs/4.17.4#get
  27. * @param {Object} obj Target object
  28. * @param {string} path Path to use
  29. * @param {any} val Default value
  30. * @return {any} Value returned
  31. */
  32. export function get(obj, path, val) {
  33. if (typeof path === "string") path = path.split(".");
  34. if (obj[path[0]] === undefined) return val;
  35. if (path.length > 1) {
  36. return get(obj[path[0]], path.slice(1), val);
  37. } else return obj[path[0]];
  38. }
  39. export default {
  40. set,
  41. get,
  42. };