UNPKG

foop

Version:

interfaces that describe their intentions.

60 lines (59 loc) 3.72 kB
// /** // * get attribute from path, return undefined when no such path // * @param {Object} obj // * @param {String} path like: 'a.b.c.0.e' // * @return {any} // */ // const get = (obj, path, defaultValue) => { // if (!isPlainObject(obj) && !isArray(obj)) return undefined // if (!path) return obj // //compatible with lodash style // path = path.replace(/\[|\]\./g, '.') // // let pathArray = path.split('.') // let p; // let v = obj; // while ((p = pathArray.shift())) { // v = v[p] // if (isUndefined(v)) return defaultValue // } // return v // } // // const set = (obj, path, value) => { // if (!isPlainObject(obj)) return undefined // // //compatible with lodash style // path = path.replace(/\[|\]\./g, '.') // // let pathArray = path.split('.') // let p; // let v = obj; // // for (let i = 0; i < pathArray.length; i++) { // let p = pathArray[i] // if (i >= pathArray.length - 1) { // v[p] = value // } else { // if (isUndefined(v[p])) v[p] = {} // } // v = v[p] // } // return obj // } // // const pick = (obj, keys) => { // if (!isPlainObject(obj) || !isArray(keys)) return obj // return keys.map(path => { // const value = get(obj, path) // const key = last(path.split('.')) // return { // key, // value // } // }).reduce((memo, o) => { // memo[o.key] = o.value // return memo // }, {}) // } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FubmlmZS5qcyIsInNvdXJjZXMiOlsic2FubmlmZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyAvKipcbi8vICAqIGdldCBhdHRyaWJ1dGUgZnJvbSBwYXRoLCByZXR1cm4gdW5kZWZpbmVkIHdoZW4gbm8gc3VjaCBwYXRoXG4vLyAgKiBAcGFyYW0gIHtPYmplY3R9IG9ialxuLy8gICogQHBhcmFtICB7U3RyaW5nfSBwYXRoIGxpa2U6ICdhLmIuYy4wLmUnXG4vLyAgKiBAcmV0dXJuIHthbnl9XG4vLyAgKi9cbi8vIGNvbnN0IGdldCA9IChvYmosIHBhdGgsIGRlZmF1bHRWYWx1ZSkgPT4ge1xuLy8gICBpZiAoIWlzUGxhaW5PYmplY3Qob2JqKSAmJiAhaXNBcnJheShvYmopKSByZXR1cm4gdW5kZWZpbmVkXG4vLyAgIGlmICghcGF0aCkgcmV0dXJuIG9ialxuLy8gICAgIC8vY29tcGF0aWJsZSB3aXRoIGxvZGFzaCBzdHlsZVxuLy8gICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXFt8XFxdXFwuL2csICcuJylcbi8vXG4vLyAgIGxldCBwYXRoQXJyYXkgPSBwYXRoLnNwbGl0KCcuJylcbi8vICAgbGV0IHA7XG4vLyAgIGxldCB2ID0gb2JqO1xuLy8gICB3aGlsZSAoKHAgPSBwYXRoQXJyYXkuc2hpZnQoKSkpIHtcbi8vICAgICB2ID0gdltwXVxuLy8gICAgIGlmIChpc1VuZGVmaW5lZCh2KSkgcmV0dXJuIGRlZmF1bHRWYWx1ZVxuLy8gICB9XG4vLyAgIHJldHVybiB2XG4vLyB9XG4vL1xuLy8gY29uc3Qgc2V0ID0gKG9iaiwgcGF0aCwgdmFsdWUpID0+IHtcbi8vICAgaWYgKCFpc1BsYWluT2JqZWN0KG9iaikpIHJldHVybiB1bmRlZmluZWRcbi8vXG4vLyAgIC8vY29tcGF0aWJsZSB3aXRoIGxvZGFzaCBzdHlsZVxuLy8gICBwYXRoID0gcGF0aC5yZXBsYWNlKC9cXFt8XFxdXFwuL2csICcuJylcbi8vXG4vLyAgIGxldCBwYXRoQXJyYXkgPSBwYXRoLnNwbGl0KCcuJylcbi8vICAgbGV0IHA7XG4vLyAgIGxldCB2ID0gb2JqO1xuLy9cbi8vICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXRoQXJyYXkubGVuZ3RoOyBpKyspIHtcbi8vICAgICBsZXQgcCA9IHBhdGhBcnJheVtpXVxuLy8gICAgIGlmIChpID49IHBhdGhBcnJheS5sZW5ndGggLSAxKSB7XG4vLyAgICAgICB2W3BdID0gdmFsdWVcbi8vICAgICB9IGVsc2Uge1xuLy8gICAgICAgaWYgKGlzVW5kZWZpbmVkKHZbcF0pKSB2W3BdID0ge31cbi8vICAgICB9XG4vLyAgICAgdiA9IHZbcF1cbi8vICAgfVxuLy8gICByZXR1cm4gb2JqXG4vLyB9XG4vL1xuLy8gY29uc3QgcGljayA9IChvYmosIGtleXMpID0+IHtcbi8vICAgaWYgKCFpc1BsYWluT2JqZWN0KG9iaikgfHwgIWlzQXJyYXkoa2V5cykpIHJldHVybiBvYmpcbi8vICAgcmV0dXJuIGtleXMubWFwKHBhdGggPT4ge1xuLy8gICAgIGNvbnN0IHZhbHVlID0gZ2V0KG9iaiwgcGF0aClcbi8vICAgICBjb25zdCBrZXkgPSBsYXN0KHBhdGguc3BsaXQoJy4nKSlcbi8vICAgICByZXR1cm4ge1xuLy8gICAgICAga2V5LFxuLy8gICAgICAgdmFsdWVcbi8vICAgICB9XG4vLyAgIH0pLnJlZHVjZSgobWVtbywgbykgPT4ge1xuLy8gICAgIG1lbW9bby5rZXldID0gby52YWx1ZVxuLy8gICAgIHJldHVybiBtZW1vXG4vLyAgIH0sIHt9KVxuLy8gfVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OyJ9