get.js 977 B

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.get = void 0;
  4. const hasOwnProperty_1 = require("@jsonjoy.com/util/lib/hasOwnProperty");
  5. const get = (val, path) => {
  6. const pathLength = path.length;
  7. let key;
  8. if (!pathLength)
  9. return val;
  10. for (let i = 0; i < pathLength; i++) {
  11. key = path[i];
  12. if (val instanceof Array) {
  13. if (typeof key !== 'number') {
  14. if (key === '-')
  15. return undefined;
  16. const key2 = ~~key;
  17. if ('' + key2 !== key)
  18. return undefined;
  19. key = key2;
  20. }
  21. val = val[key];
  22. }
  23. else if (typeof val === 'object') {
  24. if (!val || !(0, hasOwnProperty_1.hasOwnProperty)(val, key))
  25. return undefined;
  26. val = val[key];
  27. }
  28. else
  29. return undefined;
  30. }
  31. return val;
  32. };
  33. exports.get = get;