UNPKG

@state-sync/redux-path-reducer

Version:
40 lines (39 loc) 1.03 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Parse JSON path and return array of segments * @param {string} pathStr * @returns {Array} array of segments */ function parse(pathStr) { //TODO: optimize by indexOf loop var split, path = []; // Split up the path split = pathStr.split('/'); return split.splice(1); } /** * Find and return value by path, if path is not available in provided context, returns null * @param model * @param {string} path path to value * @returns {any} value or null */ function find(model, path) { for (var _i = 0, _a = parse(path); _i < _a.length; _i++) { var seg = _a[_i]; if (model === null) { return null; } else if (model instanceof Array) { model = model[parseInt(seg)]; } else if (model instanceof Object) { model = model[seg]; } else { model = null; } } return model; } exports.default = find;