UNPKG

foop

Version:

interfaces that describe their intentions.

80 lines (75 loc) 5.66 kB
var curry = require('../fp/curry') var isString = require('../is/string') /** * Gets the element at index `n` of `array`. If `n` is negative, the nth * element from the end is returned. * * @memberOf fp * @since 5.0.0-beta.1 * * @param {Array|Object|String} array The array|obj|string to query. * @param {number} [n=0] The index of the element to return. * @returns {*} Returns the nth element of `array`. * * @tests fp/arity * * @fork 4.11.0 * @category Array * * @name nth * @alias at * @alias atIndex * @alias atPosition * * {@link http://documentcloud.github.io/underscore-contrib/#nth underscore-contrib-nth} * {@link https://github.com/lodash/lodash/blob/master/.internal/baseAt.js lodash-base-at} * {@link https://github.com/lodash/lodash/blob/master/at.js lodash-at} * {@link https://github.com/ramda/ramda/blob/v0.24.1/src/nth.js ramda-nth} * * @see {@link ramda-nth} * @see {@link lodash-base-at} * @see {@link lodash-at} * @see {@link underscore-contrib-nth} * * @example * * const array = ['a', 'b', 'c', 'd'] * * nth(array, 1) * //=> 'b' * * nth(array, -2) * //=> 'c' * */ function nth(list, offset) { // isNill(array) return // @TODO from 0 var index = offset < 0 ? list.length + offset : offset // return list[index] return isString(list) ? list.charAt(index) : list[index] } module.exports = curry(2, nth) /** * @ignore * The base implementation of `at` without support for individual paths. * * @private * @param {Array|Object} object The object to iterate over. * @param {string[]} paths The property paths to pick. * @returns {Array} Returns the picked elements. */ // const isIndex = require('./isValidIndex') // const isNill = require('../is/nill') // function baseAt(object, paths) { // let index = -1 // const length = paths.length // const result = new Array(length) // const skip = object == null // // while (++index < length) { // result[index] = skip ? undefined : get(object, paths[index]) // } // return result // } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnRoLmpzIiwic291cmNlcyI6WyJudGguanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3VycnkgPSByZXF1aXJlKCcuLi9mcC9jdXJyeScpXG5jb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2lzL3N0cmluZycpXG5cbi8qKlxuICogR2V0cyB0aGUgZWxlbWVudCBhdCBpbmRleCBgbmAgb2YgYGFycmF5YC4gSWYgYG5gIGlzIG5lZ2F0aXZlLCB0aGUgbnRoXG4gKiBlbGVtZW50IGZyb20gdGhlIGVuZCBpcyByZXR1cm5lZC5cbiAqXG4gKiBAbWVtYmVyT2YgZnBcbiAqIEBzaW5jZSA1LjAuMC1iZXRhLjFcbiAqXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxTdHJpbmd9IGFycmF5IFRoZSBhcnJheXxvYmp8c3RyaW5nIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtudW1iZXJ9IFtuPTBdIFRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB0byByZXR1cm4uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbnRoIGVsZW1lbnQgb2YgYGFycmF5YC5cbiAqXG4gKiBAdGVzdHMgZnAvYXJpdHlcbiAqXG4gKiBAZm9yayA0LjExLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICpcbiAqIEBuYW1lIG50aFxuICogQGFsaWFzIGF0XG4gKiBAYWxpYXMgYXRJbmRleFxuICogQGFsaWFzIGF0UG9zaXRpb25cbiAqXG4gKiB7QGxpbmsgaHR0cDovL2RvY3VtZW50Y2xvdWQuZ2l0aHViLmlvL3VuZGVyc2NvcmUtY29udHJpYi8jbnRoIHVuZGVyc2NvcmUtY29udHJpYi1udGh9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2xvZGFzaC9sb2Rhc2gvYmxvYi9tYXN0ZXIvLmludGVybmFsL2Jhc2VBdC5qcyBsb2Rhc2gtYmFzZS1hdH1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vbG9kYXNoL2xvZGFzaC9ibG9iL21hc3Rlci9hdC5qcyBsb2Rhc2gtYXR9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2Jsb2IvdjAuMjQuMS9zcmMvbnRoLmpzIHJhbWRhLW50aH1cbiAqXG4gKiBAc2VlIHtAbGluayByYW1kYS1udGh9XG4gKiBAc2VlIHtAbGluayBsb2Rhc2gtYmFzZS1hdH1cbiAqIEBzZWUge0BsaW5rIGxvZGFzaC1hdH1cbiAqIEBzZWUge0BsaW5rIHVuZGVyc2NvcmUtY29udHJpYi1udGh9XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgIGNvbnN0IGFycmF5ID0gWydhJywgJ2InLCAnYycsICdkJ11cbiAqXG4gKiAgIG50aChhcnJheSwgMSlcbiAqICAgLy89PiAnYidcbiAqXG4gKiAgIG50aChhcnJheSwgLTIpXG4gKiAgIC8vPT4gJ2MnXG4gKlxuICovXG5mdW5jdGlvbiBudGgobGlzdCwgb2Zmc2V0KSB7XG4gIC8vIGlzTmlsbChhcnJheSkgcmV0dXJuXG5cbiAgLy8gQFRPRE8gZnJvbSAwXG4gIGNvbnN0IGluZGV4ID0gb2Zmc2V0IDwgMCA/IGxpc3QubGVuZ3RoICsgb2Zmc2V0IDogb2Zmc2V0XG4gIC8vIHJldHVybiBsaXN0W2luZGV4XVxuICByZXR1cm4gaXNTdHJpbmcobGlzdCkgPyBsaXN0LmNoYXJBdChpbmRleCkgOiBsaXN0W2luZGV4XVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIG50aClcblxuLyoqXG4gKiBAaWdub3JlXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgYXRgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaW5kaXZpZHVhbCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7c3RyaW5nW119IHBhdGhzIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBwaWNrZWQgZWxlbWVudHMuXG4gKi9cbi8vIGNvbnN0IGlzSW5kZXggPSByZXF1aXJlKCcuL2lzVmFsaWRJbmRleCcpXG4vLyBjb25zdCBpc05pbGwgPSByZXF1aXJlKCcuLi9pcy9uaWxsJylcbi8vIGZ1bmN0aW9uIGJhc2VBdChvYmplY3QsIHBhdGhzKSB7XG4vLyAgIGxldCBpbmRleCA9IC0xXG4vLyAgIGNvbnN0IGxlbmd0aCA9IHBhdGhzLmxlbmd0aFxuLy8gICBjb25zdCByZXN1bHQgPSBuZXcgQXJyYXkobGVuZ3RoKVxuLy8gICBjb25zdCBza2lwID0gb2JqZWN0ID09IG51bGxcbi8vXG4vLyAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4vLyAgICAgcmVzdWx0W2luZGV4XSA9IHNraXAgPyB1bmRlZmluZWQgOiBnZXQob2JqZWN0LCBwYXRoc1tpbmRleF0pXG4vLyAgIH1cbi8vICAgcmV0dXJuIHJlc3VsdFxuLy8gfVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEN4QyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFOzs7O0VBSXpCQSxHQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEdBQUcsTUFBTTs7RUFFeEQsT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0NBQ3pEOztBQUVELE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsifQ==