diff --git a/.internal/baseNth.js b/.internal/baseNth.js deleted file mode 100644 index 962b6a8c5..000000000 --- a/.internal/baseNth.js +++ /dev/null @@ -1,20 +0,0 @@ -import isIndex from './isIndex.js' - -/** - * The base implementation of `nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ -function baseNth(array, n) { - const { length } = array - if (!length) { - return - } - n += n < 0 ? length : 0 - return isIndex(n, length) ? array[n] : undefined -} - -export default baseNth diff --git a/nth.js b/nth.js index fc74ae6aa..66e66328a 100644 --- a/nth.js +++ b/nth.js @@ -1,4 +1,4 @@ -import baseNth from './.internal/baseNth.js' +import isIndex from './.internal/isIndex.js' import toInteger from './toInteger.js' /** @@ -21,7 +21,13 @@ import toInteger from './toInteger.js' * // => 'c' */ function nth(array, n) { - return (array != null && array.length) ? baseNth(array, toInteger(n)) : undefined + const length = array == null ? 0 : array.length + if (!length) { + return + } + n = toInteger(n) + n += n < 0 ? length : 0 + return isIndex(n, length) ? array[n] : undefined } export default nth diff --git a/nthArg.js b/nthArg.js index 4612f599b..f5da0cf51 100644 --- a/nthArg.js +++ b/nthArg.js @@ -1,5 +1,4 @@ -import baseNth from './.internal/baseNth.js' -import toInteger from './toInteger.js' +import nth from './nth.js' /** * Creates a function that gets the argument at index `n`. If `n` is negative, @@ -20,8 +19,7 @@ import toInteger from './toInteger.js' * // => 'c' */ function nthArg(n) { - n = toInteger(n) - return (...args) => baseNth(args, n) + return (...args) => nth(args, n) } export default nthArg