UNPKG

foop

Version:

interfaces that describe their intentions.

41 lines (37 loc) 2.93 kB
var isNil = require('../is/nullOrUndefined') var curry = require('./curry') /** * @desc retrieve the value at a given path. * @since v5.0.0 * @memberOf fp * @curried 2 * * @param {Array} path The path to use. * @param {Object} obj The object to retrieve the nested property from. * @return {*} The data at `path`. * * @func * @category Object * @typedefn Idx = String | Int * @sig [Idx] -> {a} -> a | Undefined * * {@link https://github.com/ramda/ramda/blob/master/src/path.js ramda-path} * @see {@link ramda-path} * @see fp/prop * * @example * * path(['a', 'b'], {a: {b: 2}}); //=> 2 * path(['a', 'b'], {c: {b: 2}}); //=> undefined * */ module.exports = curry(2, function path(paths, obj) { var value = obj var index = 0 while (index < paths.length) { if (isNil(value)) { return } value = value[paths[index++]] } return value }) //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC5qcyIsInNvdXJjZXMiOlsicGF0aC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBpc05pbCA9IHJlcXVpcmUoJy4uL2lzL251bGxPclVuZGVmaW5lZCcpXG5jb25zdCBjdXJyeSA9IHJlcXVpcmUoJy4vY3VycnknKVxuXG4vKipcbiAqIEBkZXNjIHJldHJpZXZlIHRoZSB2YWx1ZSBhdCBhIGdpdmVuIHBhdGguXG4gKiBAc2luY2UgdjUuMC4wXG4gKiBAbWVtYmVyT2YgZnBcbiAqIEBjdXJyaWVkIDJcbiAqXG4gKiBAcGFyYW0ge0FycmF5fSBwYXRoIFRoZSBwYXRoIHRvIHVzZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmogVGhlIG9iamVjdCB0byByZXRyaWV2ZSB0aGUgbmVzdGVkIHByb3BlcnR5IGZyb20uXG4gKiBAcmV0dXJuIHsqfSBUaGUgZGF0YSBhdCBgcGF0aGAuXG4gKlxuICogQGZ1bmNcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEB0eXBlZGVmbiBJZHggPSBTdHJpbmcgfCBJbnRcbiAqIEBzaWcgW0lkeF0gLT4ge2F9IC0+IGEgfCBVbmRlZmluZWRcbiAqXG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvbWFzdGVyL3NyYy9wYXRoLmpzIHJhbWRhLXBhdGh9XG4gKiBAc2VlIHtAbGluayByYW1kYS1wYXRofVxuICogQHNlZSBmcC9wcm9wXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHBhdGgoWydhJywgJ2InXSwge2E6IHtiOiAyfX0pOyAvLz0+IDJcbiAqICAgICAgcGF0aChbJ2EnLCAnYiddLCB7Yzoge2I6IDJ9fSk7IC8vPT4gdW5kZWZpbmVkXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIGZ1bmN0aW9uIHBhdGgocGF0aHMsIG9iaikge1xuICBsZXQgdmFsdWUgPSBvYmpcbiAgbGV0IGluZGV4ID0gMFxuXG4gIHdoaWxlIChpbmRleCA8IHBhdGhzLmxlbmd0aCkge1xuICAgIGlmIChpc05pbCh2YWx1ZSkpIHJldHVyblxuICAgIHZhbHVlID0gdmFsdWVbcGF0aHNbaW5kZXgrK11dXG4gIH1cblxuICByZXR1cm4gdmFsdWVcbn0pXG4iXSwibmFtZXMiOlsiY29uc3QiLCJsZXQiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUM5Q0EsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEyQmhDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFO0VBQ2xEQyxHQUFHLENBQUMsS0FBSyxHQUFHLEdBQUc7RUFDZkEsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDOztFQUViLE9BQU8sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUU7SUFDM0IsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBQSxNQUFNLEVBQUE7SUFDeEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztHQUM5Qjs7RUFFRCxPQUFPLEtBQUs7Q0FDYixDQUFDOyJ9