department-of-veterans-affairs/vets-website

View on GitHub
src/platform/utilities/data/deconstructPath.js

Summary

Maintainability
A
35 mins
Test Coverage
// Coerce to numbers where applicable
function coerceNumber(e) {
  const num = parseInt(e, 10);
  return e === `${num}` ? num : e;
}

/**
 * Takes a string and casts it into an array.
 * Can take strings like a.b[4].c
 *
 * Numbers are returned as single itemed arrays
 *
 * @param {string|Number} path
 * @return {Array}
 */
export default function deconstructPath(path) {
  return typeof path === 'number'
    ? [path]
    : path
        .split(/[.[\]]/)
        .filter(e => e !== '')
        .map(coerceNumber);
}