1.0.0 • Published 8 months ago

nth-arg v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

nth-arg

nth-arg is a utility function that returns a higher-order function to apply a given function to the nth argument of a function's argument list. It allows you to easily work with specific arguments in a function by targeting their index, including support for negative indices, similar to Array.prototype.at.

Table of Contents

Installation

You can install nth-arg using npm or yarn:

npm install nth-arg

or

yarn add nth-arg

Usage

Basic Usage

You can directly provide a function and use nth-arg to apply it to the nth argument:

const nth = require('nth-arg');

const getSecondArg = nth(1, x => x * 2);
console.log(getSecondArg(5, 10, 15)); // Output: 20

Currying

If you don't provide a function, nth-arg will return a curried function that allows you to specify the function later:

const applyToThird = nth(2);
const getThirdArgLength = applyToThird(arg => arg.length);
console.log(getThirdArgLength('a', 'bb', 'ccc')); // Output: 3

Negative Indices

nth-arg supports negative indices, which work similarly to Array.prototype.at, letting you access arguments from the end:

const getLastArg = nth(-1, x => x.toUpperCase());
console.log(getLastArg('hello', 'world')); // Output: 'WORLD'

API

nth(n, [fn])

Returns a function that applies fn to the nth argument of a function's argument list.

  • n (number): The index of the argument in the arguments array to apply fn to. Supports negative indices.
  • fn (function | undefined): The function to be applied to the nth argument. If not provided, a curried version of the function is returned.

Returns:

  • If fn is provided, returns a function that applies fn to the nth argument.
  • If fn is not provided, returns a curried function that takes a function and applies it to the nth argument.

Example

// Basic usage with provided function
const getSecondArg = nth(1, x => x * 2);
console.log(getSecondArg(5, 10, 15)); // Output: 20

// Currying usage
const applyToThird = nth(2);
const getThirdArgLength = applyToThird(arg => arg.length);
console.log(getThirdArgLength('a', 'bb', 'ccc')); // Output: 3

// Using negative indices
const getLastArg = nth(-1, x => x.toUpperCase());
console.log(getLastArg('hello', 'world')); // Output: 'WORLD'

License

This project is licensed under the MIT License - see the LICENSE file for details.

1.0.0

8 months ago