Checks if the given array is present and it is not empty (contains at least one element).
Questions
- How to check if an array is empty?
- How to check if an array is empty or null or undefined?
- How to check if an array is empty or not?
- How to check if an array is empty or doesn't exist?
TypeScript source • JavaScript source
Checks if the given arguments are all `Arrays`.
Type signature
<T>(...xs: T[]) => boolean
Questions
- How to check if all the given values are arrays?
TypeScript source • JavaScript source
Splits the given array into an array of chunks of up to the given length.
Type signature
(count: number) => <T>(xs: T[]) => T[] | T[][]
Questions
- How to split an array into chunks?
- How to split an array into chunks of the same size?
TypeScript source • JavaScript source
Computes a set difference between the two given arrays.
Type signature
<T>(xs: T[], ys: T[]) => T[]
Examples
difference(
[1, 2, 3, 4, 5, 6],
[2, 4],
);
Try in REPL
Questions
- How to find elements which are present in the first array and not in the second?
TypeScript source • JavaScript source
Checks if two arrays are not equal.
Type signature
<T>(xs?: T[], ys?: T[]) => boolean
Questions
- How to check if two arrays differ?
- How to check if two arrays are not equal?
- How to check if two arrays are equal or not?
TypeScript source • JavaScript source
Lists all the duplicated values in the given array.
Examples
duplicates([
1, 2, 3, 4, 3, 4, 3, 6,
]);
Try in REPL
Questions
- How to find duplicates in an array?
TypeScript source • JavaScript source
Empty array.
Questions
- How to get an empty array?
TypeScript source • JavaScript source
Takes exactly the given count of elements.
Type signature
(count: number) => <T>(xs: T[]) => T[]
Questions
- How to get exactly N elements out of an array?
TypeScript source • JavaScript source
Filters out the given value.
Type signature
<T>(y: T) => (xs: T[]) => T[]
Questions
- How to get all the values of an array except the given one?
TypeScript source • JavaScript source
Filters the given array with the given predicate just like Array.filter but does it in-place thus mutates the original array.
Type signature
<T>(f: (value: T, index: number, context: T[]) => boolean) => (xs: T[]) => T[]
Examples
const xs = [1, 2, 3, 4, 5, 6, 7];
const odd = (x) => x % 2 === 1;
const ys = filterInPlace(odd)(xs);
ys === xs;
ys;
Try in REPL
Questions
- How to filter an array in place?
TypeScript source • JavaScript source
Finds an element by a predicate function within the given array, otherwise, it returns the given fallback value or undefined when fallback is not present.
Type signature
<T>(predicate: (value: T, index: number, context: T[]) => boolean, fallback?: T) => (xs: T[]) => T
Examples
find((x) => x > 2)([1, 2, 3, 5, 7]);
Try in REPL
find((x) => x > 2)([
1, 2, -3, -5, -7,
]);
Try in REPL
Questions
- How to find an element of an array by a given predicate?
TypeScript source • JavaScript source
Returns the first element or undefined when there are no elements in the given array.
Type signature
<T>([x]: T[]) => T | undefined
Questions
- How to get the first element of an array?
TypeScript source • JavaScript source
Maps and flattens the result.
Type signature
<T, TResult>(f: (value: T, index: number, context: T[]) => TResult[]) => (xs: T[]) => TResult[]
Examples
flatMap((text) => [...text])([
"test",
"123",
]);
Try in REPL
Questions
- How to flat map an array?
- How to map and then flatten an array?
TypeScript source • JavaScript source
Flattens the nested arrays by a single level.
Examples
flatten([1, [2, 3], 4, [5, 6]]);
Try in REPL
flatten([
1,
[2, [3, 6]],
4,
[5, 6],
]);
Try in REPL
TypeScript source • JavaScript source
Inserts the given item to the array at a specific index.
Type signature
(index: number) => <T>(item: T) => ([...xs]: T[]) => T[]
Questions
- How to insert an element to an array at a given position?
TypeScript source • JavaScript source
Finds common elements between both arrays.
Type signature
<T>(xs: T[], ys: T[]) => T[]
Examples
intersection(
[1, 2, 3, 4, 5],
[5, 5, 3, 2],
);
Try in REPL
Questions
- How to find common elements present in both arrays?
TypeScript source • JavaScript source
Checks if the given argument is an array.
Type signature
(value?: unknown) => boolean
Questions
- How to check if a value is an array?
TypeScript source • JavaScript source
Returns the last element or undefined when there are no elements in the given array.
Type signature
<T>(xs: T[]) => T | undefined
Questions
- How to get the last element of an array?
TypeScript source • JavaScript source
Returns the number of elements in the given array.
Questions
- How to check an array's length?
- How to compute an array's length?
- How to check the size of an array?
- How to check the number of elements in an array?
TypeScript source • JavaScript source
Checks if lengths of the given arrays differ.
Type signature
<T1, T2>(a: T1[], b: T2[]) => boolean
Questions
- How to check if array lengths differ?
- How to check if the given arrays have different lengths?
TypeScript source • JavaScript source
Maps the given array with the given functions.
Type signature
<T>(...fs: ((x: T) => T)[]) => (xs: T[]) => T[]
TypeScript source • JavaScript source
Returns the middle element or the right one when the number of elements is even.
Type signature
<T>(xs: T[]) => T | undefined
Questions
- How to get the element in the middle of an array?
- How to get the middle element of an array?
TypeScript source • JavaScript source
Computes minimum and maximum values of the given array in a single run.
Type signature
(xs: number[]) => number[]
Examples
minMax([
10, 5, 3, -5, -4, 23, 32, 8, 1, 0,
]);
Try in REPL
Questions
- How to find the minimum and maximum values of an array?
- How to get the min/max element of an array?
TypeScript source • JavaScript source
Checks if the given array contains more than one element.
Questions
- How to check if an array contains multiple elements?
- How to check whether multiple values exist within an array?
TypeScript source • JavaScript source
Checks if the given array is empty.
Questions
- How to check if an array is empty?
TypeScript source • JavaScript source
Partitions the given array to the ones that pass the given predicate function and the ones that do not. By [convention of the Haskell's Data.Either](http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-Either.html), values that pass the predicate are placed at the right.
Type signature
<T>(predicate: (x: T) => boolean) => (xs: T[]) => readonly [T[], T[]]
Examples
partition((x) => x % 2 === 1)([
1, 2, 3, 4, 5,
]);
Try in REPL
Questions
- How to partition an array based on a condition?
- How to divide an array by a filter function?
TypeScript source • JavaScript source
Returns the given array without the last element.
Questions
- How to get an array without the last element?
- How to remove the last element from an array?
TypeScript source • JavaScript source
Generates an array of numbers from 0 to n - 1.
Questions
- How to create an array of all integers from 0 to N exclusive?
TypeScript source • JavaScript source
Removes an element at the given index from the given array.
Type signature
(index: number) => <T>(xs: T[]) => T[]
Questions
- How to remove an item from an array at a particular index?
TypeScript source • JavaScript source
Repeats the given element by the given count of times.
Type signature
(count: number) => <T>(value: T) => T[]
Questions
- How to repeat a value N times?
TypeScript source • JavaScript source
Reverses the given array without mutating it (in contrast to Array.reverse).
Questions
- How to reverse an array without mutating it?
TypeScript source • JavaScript source
Reverses the given array when enabled.
Type signature
(enabled: boolean) => <T>(xs: T[]) => T[]
Questions
- How to reverse an array without mutating it only when a condition is satisfied?
TypeScript source • JavaScript source
Returns the second element or undefined when there are less than two elements in the given array.
Type signature
<T>(xs: T[]) => T | undefined
Questions
- How to get the second element of an array?
TypeScript source • JavaScript source
Returns the second to last element or undefined when there are less than two elements in the given array.
Type signature
<T>(xs: T[]) => T | undefined
Questions
- How to get the second to last element of an array?
TypeScript source • JavaScript source
Shifts the given array to the left and circulates the elements back by modulo of the array's length.
Type signature
(count: number) => <T>(xs: T[]) => T[]
Examples
shift(1)([1, 2, 3, 4, 5]);
Try in REPL
shift(2)([1, 2, 3, 4, 5]);
Try in REPL
shift(3)([1, 2, 3, 4, 5]);
Try in REPL
TypeScript source • JavaScript source
Shuffles the given array in random order with Math.random as the default.
Type signature
<T>(xs: T[], random?: () => number) => T[]
Examples
let i = 0;
const random = () =>
[
0.013606630487694282,
0.21052486239086554,
0.28299838254636556,
0.696161009199874,
0.32165320593537117,
][i++];
shuffle([1, 2, 3, 4, 5], random);
Try in REPL
TypeScript source • JavaScript source
Shuffles the given array in-place in random order with Math.random as the default.
Type signature
<T>(xs: T[], random?: () => number) => T[]
Examples
let i = 0;
const random = () =>
[
0.013606630487694282,
0.21052486239086554,
0.28299838254636556,
0.696161009199874,
0.32165320593537117,
][i++];
shuffleInPlace(
[1, 2, 3, 4, 5],
random,
);
Try in REPL
Questions
- How to shuffle an array in place?
TypeScript source • JavaScript source
Checks if the given array contains exactly one element.
Questions
- How to check if an array contains only one element?
TypeScript source • JavaScript source
Skips the given count of elements from the given array.
Type signature
(count: number) => <T>(xs: T[]) => T[]
Questions
- How to skip the first few elements of an array?
TypeScript source • JavaScript source
Returns a new array composed of tuples of the given sliding window length of consecutive elements.
Type signature
(count: number) => <T>(xs: T[]) => T[][]
Examples
slidingWindow(2)([1, 2, 3, 4]);
Try in REPL
slidingWindow(3)([1, 2, 3, 4, 5]);
Try in REPL
slidingWindow(1)([
1, 2, 3, 4, 5, 6,
]);
Try in REPL
Questions
- How to iterate an array pairwise?
TypeScript source • JavaScript source
Sorts the given array without mutating it.
Type signature
<T>(f?: (a: T, b: T) => number) => (xs: T[]) => T[]
Examples
sort((a, b) => a - b)([
13, 79, 20, 69, 44, 67, 18, 95,
26, 55,
]);
Try in REPL
Questions
- How to sort an array without mutating it?
TypeScript source • JavaScript source
Sums the given array of numbers.
Questions
- How to sum elements of an array?
TypeScript source • JavaScript source
Takes up to a given count of elements.
Type signature
(count: number) => <T>(xs: T[]) => T[]
Questions
- How to get the first N number of elements from an array?
TypeScript source • JavaScript source
Returns unique elements of the given array.
Questions
- How to find all unique values in an array?
TypeScript source • JavaScript source
Filters out duplicated values based on the result of the given key selector.
Type signature
<T, TResult>(f: (x: T) => TResult) => (xs: T[]) => T[]
Examples
uniqueBy(({ id }) => id)([
{ id: 1, value: "a" },
{ id: 2, value: "b" },
{ id: 1, value: "c" },
]);
Try in REPL
Questions
- How to find all unique values in an array by some predicate?
TypeScript source • JavaScript source
Zips the given arrays together into pairs.
Type signature
(xs: unknown[], ys: unknown[]) => [unknown, unknown][]
TypeScript source • JavaScript source
Zips the given arrays together into pairs.
Type signature
<T>(...xs: T[][]) => T[][]
Examples
zipN([1, 2, 3], [4, 5, 6]);
Try in REPL
zipN(
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
);
Try in REPL
zipN([1, 2], [4, 5, 6], [7, 8, 9]);
Try in REPL
Questions
- How to zip multiple arrays?
TypeScript source • JavaScript source
Zips the given arrays together with the given function.
Type signature
<T1, T2>(f?: (x: T1, y: T2) => [T1, T2]) => (xs: T1[], ys: T2[]) => [T1, T2][]
Examples
zipWith((x, y) => x * x + y)(
[1, 2, 3],
[4, 5, 6],
);
Try in REPL
Questions
- How to zip two arrays with a given function?
TypeScript source • JavaScript source
Makes the function run after the given period of not being called. Useful to delay input submission for auto-complete etc.
Type signature
(f: F, wait: number) => (...args: unknown[]) => void
Examples
const f = () => console.log("Test");
const debounced = debounce(f, 2000);
debounced();
setTimeout(debounced, 1000);
setTimeout(debounced, 3000);
Try in REPL
Questions
- How to make function fire after some time not being called?
- How to debounce input events?
- How to debounce a function?
TypeScript source • JavaScript source
When awaited, delays the execution by the given number of milliseconds.
Type signature
(duration: number) => Promise<unknown>
Examples
delay(2000)(() =>
console.log("Test"),
);
Try in REPL
Questions
- How to delay a function?
- What is the JavaScript version of sleep()?
TypeScript source • JavaScript source
Runs the given tasks in a sequence.
Type signature
<T>(tasks: Task<T>[]) => Promise<Awaited<T>[]>
Examples
const f = () =>
new Promise((resolve) =>
setTimeout(resolve, 1000),
);
const g = () =>
new Promise((resolve) =>
setTimeout(resolve, 2000),
);
sequence([f, g]).then(() =>
console.log("Done"),
);
Try in REPL
Questions
- How to run async tasks sequentially?
TypeScript source • JavaScript source
Clamps the given date to the given date range.
Type signature
(min: Date, max: Date) => (date: Date) => Date
Examples
const date = new Date(
"2019-06-15T13:54:33.232Z",
);
const min = new Date(
"2019-02-23T13:54:33.232Z",
);
const max = new Date(
"2019-03-13T13:54:33.232Z",
);
clamp(min, max)(date);
Try in REPL
Questions
- How to clamp a date to the desired date range?
- How to enforce a date to be in a given date range?
TypeScript source • JavaScript source
Clones the given Date object.
Examples
const date = new new Date(
"2019-04-24T13:54:33.232Z",
)();
const cloned = clone(date);
cloned !== date &&
cloned.valueOf() ===
date.valueOf();
Try in REPL
Questions
- How to clone a Date object?
TypeScript source • JavaScript source
Computes a signed difference between two Date objects as milliseconds.
Type signature
(a: Date, b: Date) => number
Examples
dateDiff(
new Date(
"2017-01-01T13:00:00.000Z",
),
new Date(
"2017-01-01T12:00:00.000Z",
),
);
Try in REPL
Questions
- How to compute Date difference?
TypeScript source • JavaScript source
Checks if the given date is between the given date range (inclusive).
Type signature
(from: Date, to: Date) => (date: Date) => boolean
Examples
dateInRange(
new Date(
"2018-06-10T12:00:00.000Z",
),
new Date(
"2018-06-20T12:00:00.000Z",
),
)(
new Date(
"2018-06-15T12:00:00.000Z",
),
);
Try in REPL
Questions
- How to check if a date is within a given date range?
TypeScript source • JavaScript source
Returns a local day range at a particular Date.
Examples
const date = new Date(
"2018-12-31T13:54:33.232Z",
);
dayRange(date);
Try in REPL
Questions
- How to find a date range of a given day?
TypeScript source • JavaScript source
Returns an array of days in a particular months. Number of days in February varies if it is a leap year or not.
Type signature
(leapYear: boolean) => [number, number, number, number, number, number, number, number, number, number, number, number]
Questions
- How to find out how many days are in a particular month?
- How to find out how many days there are in a leap year?
TypeScript source • JavaScript source
Calculates the number of days in a particular year. Varies by the leap year.
Type signature
(year: number) => 366 | 365
Questions
- How many days are in a particular year?
- How many days are in a leap year?
- How many days are in a common year?
TypeScript source • JavaScript source
Displays padded time string.
Type signature
(source: [number, number, number], showSeconds: boolean) => string
Questions
- How to display padded time?
TypeScript source • JavaScript source
Returns a local Date of an end of the day at a particular Date.
Examples
endOfDay(
new Date(
"2018-12-31T13:54:33.232Z",
),
);
Try in REPL
Questions
- How to find a date of an end of a given day?
TypeScript source • JavaScript source
Formats a given date as a simple YYYY-MM-DD string.
Examples
formatDate(
new Date("2019-02-24T01:12:34"),
);
Try in REPL
Questions
- How to render a date in a YYYY-MM-DD format?
TypeScript source • JavaScript source
Formats a given date as a simple YYYY-MM-DD HH:MM(:SS) string.
Type signature
(sourceDate: Date, showSeconds?: boolean) => string
Examples
formatDateTime(
new Date("2019-02-24T01:12:34"),
);
Try in REPL
formatDateTime(
new Date("2019-02-24T01:12:34"),
true,
);
Try in REPL
Questions
- How to render a date in a YYYY-MM-DD HH:MM format?
- How to render a date in a YYYY-MM-DD HH:MM:SS format?
TypeScript source • JavaScript source
Formats a duration in milliseconds to a padded time string.
Type signature
(duration: number, showSeconds?: boolean) => string
Questions
- How to render a formatted duration?
TypeScript source • JavaScript source
Formats a given date as a simple HH:MM(:SS) string.
Type signature
(date: Date, showSeconds?: boolean) => string
Examples
formatTime(
new Date("2019-02-24T01:12:34"),
);
Try in REPL
formatTime(
new Date("2019-02-24T01:12:34"),
true,
);
Try in REPL
Questions
- How to render a date in a HH:MM format?
- How to render a date in a HH:MM:SS format?
TypeScript source • JavaScript source
Converts the given day count to milliseconds.
Questions
- How to find how many milliseconds are in a given number of days?
TypeScript source • JavaScript source
Converts the given hour count to milliseconds.
Type signature
(hours: number) => number
Questions
- How to find how many milliseconds are in a given number of hours?
TypeScript source • JavaScript source
Converts the given minute count to milliseconds.
Type signature
(minutes: number) => number
Questions
- How to find how many milliseconds are in a given number of minutes?
TypeScript source • JavaScript source
Converts the given second count to milliseconds.
Type signature
(seconds: number) => number
Questions
- How to find how many milliseconds are in a given number of seconds?
TypeScript source • JavaScript source
Joins a date-time pair into a date-time string.
Type signature
(date: string, time: string) => string
Examples
joinDateTime(
"2019-01-15",
"13:54:33.232Z",
);
Try in REPL
Questions
- How to join date and time to get ISO-compliant date-time string?
TypeScript source • JavaScript source
Detects if a given year is a leap year.
Type signature
(year: number) => boolean
Questions
- How to find if the given year is a leap year?
TypeScript source • JavaScript source
Parses HH:MM string into hours and minutes.
Type signature
(text?: string) => [number, number]
Questions
- How to parse time string into hours and minutes?
TypeScript source • JavaScript source
Splits a date-time string into a date-time pair.
Type signature
(dateTimeString: string) => [string, string]
Examples
splitDateTime(
"2019-01-15T13:54:33.232Z",
);
Try in REPL
Questions
- How to split ISO-compliant date-time string into a date and time pair?
TypeScript source • JavaScript source
Returns a local Date of a start of the day at a particular Date.
Examples
endOfDay(
new Date(
"2019-01-01T13:54:33.232Z",
),
);
Try in REPL
Questions
- How to find a date of the start of a given day?
TypeScript source • JavaScript source
Subtracts the given number of days from the given Date object.
Type signature
(sourceDate: Date, numberOfDays: number) => Date
Examples
subtractDays(
new Date(
"2019-01-15T13:54:33.232Z",
),
1,
);
Try in REPL
Questions
- How to subtract days from a given date?
TypeScript source • JavaScript source
Extracts padded YYYY-MM-DD date string out of the given date object.
Examples
toDate(
new Date(
"2019-01-15T12:00:00.000Z",
),
);
Try in REPL
Questions
- How to get only the date from a Date object?
TypeScript source • JavaScript source
Converts the given array of values into Dates using the Date constructor.
Type signature
(xs: (string | number | Date)[]) => Date[]
Examples
toDates([
"2019-01-15T13:54:33.232Z",
new Date(
"2019-01-15T13:54:33.232Z",
).valueOf(),
new Date(
"2019-01-15T13:54:33.232Z",
),
]);
Try in REPL
Questions
- How to convert an array of string and timestamps into an array of Date objects?
TypeScript source • JavaScript source
Converts milliseconds into days.
Type signature
(milliseconds: number) => number
Questions
- How to convert milliseconds into days?
TypeScript source • JavaScript source
Converts milliseconds into hours.
Type signature
(milliseconds: number) => number
Questions
- How to convert milliseconds into hours?
TypeScript source • JavaScript source
Returns an ISO-compliant date-time string.
Examples
toISO(
new Date(
"2019-04-24T13:54:33.232Z",
),
);
Try in REPL
Questions
- How to convert Date object to ISO-compliant date string?
TypeScript source • JavaScript source
Converts milliseconds into minutes.
Type signature
(milliseconds: number) => number
Questions
- How to convert milliseconds into minutes?
TypeScript source • JavaScript source
Converts milliseconds into seconds.
Type signature
(milliseconds: number) => number
Questions
- How to convert milliseconds into seconds?
TypeScript source • JavaScript source
Checks if the given date is present and it is valid.
Type signature
(date?: unknown) => boolean
Questions
- How to check if a Date is valid or not?
TypeScript source • JavaScript source
Asserts given conditions.
Type signature
(condition: boolean, callbackOrMessage?: (() => void) | string) => void;
export declare const throws: (f: () => void) => unknown | undefined;
export declare const assertNumber: (x?: unknown) => void;
export declare const assertInteger: (x?: unknown) => void;
export declare const assertByte: (x?: unknown) => void;
export declare const assertNormal: (x?: unknown) => void;
export declare const assertString: (x?: unknown, message?: string) => void;
export declare const assertIsDefined: (x?: unknown, message?: string) => void;
export default assert
Questions
- How to assert a condition?
- How to throw when a condition is not satisfied?
TypeScript source • JavaScript source
Computes a deep difference between the two values (primitives, objects, arrays, etc.).
Type signature
(obj1?: unknown, obj2?: unknown) => DiffResult;
export default diff
Questions
- How to compute a diff?
- How to compute a deep diff?
- How to compute a diff between two objects?
- How to compute a diff between two arrays?
TypeScript source • JavaScript source
Decodes the given Base64URL back into a string.
Type signature
(text: string, context?: DecodeContext) => string
TypeScript source • JavaScript source
Decodes the given Base64URL back into a byte array.
Type signature
(text: string, context?: DecodeContext) => number[]
Examples
decodeBytes("w4Jnw6vCp20-bBsQfA");
Try in REPL
Questions
- How to decode Base64URL into a byte array?
TypeScript source • JavaScript source
Encodes the given string into Base64URL.
Type signature
(text: string, context?: EncodeContext) => string
Questions
- How to encode a string as Base64URL?
TypeScript source • JavaScript source
Encodes the given bytes into Base64URL.
Type signature
(bytes: number[], context?: EncodeContext) => string
Examples
encodeBytes([
0xc2, 0x67, 0xeb, 0xa7, 0x6d,
0x3e, 0x6c, 0x1b, 0x10, 0x7c,
]);
Try in REPL
Questions
- How to encode bytes as Base64URL?
TypeScript source • JavaScript source
Converts Base64 string into Base64URL one.
Type signature
(base64: string) => string
Questions
- How to convert Base64 to Base64URL?
TypeScript source • JavaScript source
Converts Base64URL string into Base64 one.
Type signature
(base64Url: string) => string
Questions
- How to convert Base64URL to Base64?
TypeScript source • JavaScript source
Converts a string to a byte array.
Type signature
(byteString: string) => number[]
Questions
- How to convert a string into a byte array?
TypeScript source • JavaScript source
Coverts a byte array into a string.
Type signature
(bytes: number[]) => string
Questions
- How to convert a byte array to string?
TypeScript source • JavaScript source
Checks if the given string is a valid Windows file name.
Type signature
(name: string) => boolean
Questions
- How to find valid Windows file name?
- How to check if a given string is a legal/valid file name under Windows?
TypeScript source • JavaScript source
Composes multiple functions into a higher-order one. Goes right to left.
Type signature
<T, TResult>(...fs: ((x: T) => T)[]) => (x: T) => T
Examples
compose(
(x) => x * x,
(x) => x + 1,
)(3);
Try in REPL
Questions
- How to compose functions?
TypeScript source • JavaScript source
Returns the given constant no matter the input.
Questions
- How to create a function that always returns the same value despite given arguments?
TypeScript source • JavaScript source
Always return the given value.
Questions
- How to use the identity function?
- Where and why is identity function useful?
TypeScript source • JavaScript source
Memoizes the function result so it is not computed for the same parameters. Uses deep equality.
Type signature
<TResult>(f: (...xs: unknown[]) => TResult) => (...args: unknown[]) => TResult
Examples
const f = (x) => {
console.log(x);
return x + 1;
};
const memoized = memoize(f);
memoized(5);
memoized(5);
memoized(5);
memoized(3);
Try in REPL
Questions
- How to memoize a function?
TypeScript source • JavaScript source
Memoizes the function result so it is not computed for the same parameters. Uses shallow equality.
Type signature
<TResult>(f: (...xs: unknown[]) => TResult) => (...args: unknown[]) => TResult
Examples
const f = ({ x }) => {
console.log(x);
return x + 1;
};
const memoized = memoizeShallow(f);
memoized({ x: 5 });
memoized({ x: 5 });
memoized({ x: 5 });
memoized({ x: 3 });
Try in REPL
Questions
- How to memoize a function with shallow equality?
TypeScript source • JavaScript source
Memoizes the function result so it is not computed for the same parameters. Uses the given equality function.
Type signature
<T>(equals: (x: T[], y: T[]) => boolean) => <TResult>(f: (...xs: T[]) => TResult) => (...args: T[]) => TResult
Examples
const f = ({ x }) => {
console.log(x);
return x + 1;
};
const memoized = memoizeWith(
(a, b) => a.x === b.x,
)(f);
memoized({ x: 5 });
memoized({ x: 5 });
memoized({ x: 5 });
memoized({ x: 3 });
Try in REPL
Questions
- How to memoize a function with a custom equality function?
TypeScript source • JavaScript source
It does exactly nothing.
Questions
- How to create a function that does nothing?
TypeScript source • JavaScript source
Inverts the given function result.
Type signature
(f: (...xs: unknown[]) => unknown) => (...args: unknown[]) => boolean
Questions
- How to invert a boolean function?
TypeScript source • JavaScript source
Pipes an input through given functions.
Type signature
<T>(...fs: ((x: T) => T)[]) => (x: T) => T
Examples
pipe(
(x) => x * x,
(x) => x + 1,
)(3);
Try in REPL
Questions
- How to pipe an argument through a function?
TypeScript source • JavaScript source
Runs the given function only when the condition is met.
Type signature
(predicate: (...xs: unknown[]) => boolean) => (action: (...xs: unknown[]) => unknown) => (...args: unknown[]) => unknown
Examples
when((x) => x > 0)((x) =>
console.log(x),
)(5);
when((x) => x > 0)((x) =>
console.log(x),
)(-3);
Try in REPL
Questions
- How to run a function only when a condition is satisfied?
TypeScript source • JavaScript source
Runs the given function only when the condition is exactly true.
Type signature
(action: (...xs: unknown[]) => unknown) => (...args: unknown[]) => unknown
Examples
whenTrue((x) => console.log(x))(
false,
);
when((x) => x > 0)((x) =>
console.log(x),
)(true);
Try in REPL
Questions
- How to run a function only if its argument is true?
- How to execute function only if a variable is true?
TypeScript source • JavaScript source
Checks if the given argument is an array.
Questions
- How to check if a given value is an array?
TypeScript source • JavaScript source
Checks if the given value is a boolean.
Type signature
(x?: unknown) => x is boolean
Questions
- How to check if a given value is a boolean?
TypeScript source • JavaScript source
Checks if the given value is a byte.
Questions
- How to check if a given value is a byte?
- How to check if a given number is a byte?
TypeScript source • JavaScript source
Checks if the given value is a Date object.
Questions
- How to check if a given value is a Date object?
TypeScript source • JavaScript source
Checks if the given value is defined.
Questions
- How to check if a given value is defined?
- How to check if a given value is not undefined?
TypeScript source • JavaScript source
Checks if the given value is a function.
Type signature
(x?: unknown) => x is Function
Questions
- How to check if a given value is a function?
TypeScript source • JavaScript source
Checks if the given value is an integer.
Questions
- How to check if a given value is an integer?
- How to check if a given number is an integer?
TypeScript source • JavaScript source
Checks and asserts the given value is not null or undefined.
Type signature
<T>(val: T) => val is NonNullable<T>
Questions
- How to check if a given value is non-nullable?
- How to check if a given value is not null?
- How to check if a given value is not undefined?
TypeScript source • JavaScript source
Checks if the given value is a number in a normal range [0, 1].
Questions
- How to check if a given value is in 0 to 1 inclusive range?
TypeScript source • JavaScript source
Checks if the given value is a number.
Questions
- How to check if a given value is a valid number?
- How to check if a given value is not NaN?
- How to check if a given value is finite?
TypeScript source • JavaScript source
Checks if the given value is an object.
Questions
- How to check if a given value is an object?
TypeScript source • JavaScript source
Checks if the given value is a string.
Type signature
(x?: unknown) => x is string
Questions
- How to check if a given value is a string?
TypeScript source • JavaScript source
Adds two values.
Type signature
(a: number, b: number) => number
TypeScript source • JavaScript source
Calculates the average of the given array of numbers.
Type signature
(xs?: number[]) => number
Questions
- How to compute the average of an array?
TypeScript source • JavaScript source
Finds the nearest power of two greater or equal to the given value.
Questions
- How to get the nearest power of two greater or equal to the given value?
TypeScript source • JavaScript source
Clamps the given value to the given range.
Type signature
(min: number, max: number) => ((x: number) => number)
Questions
- How to clamp value to the desired range?
- How to enforce a value to be in a given range?
TypeScript source • JavaScript source
Clamps the given value to the [0, 1] range.
Questions
- How to clamp value to be in 0 to 1 inclusive range?
- How to clamp value to be in the normal range?
TypeScript source • JavaScript source
Clamps the given value to the [0, 100] range.
Questions
- How to enforce a percentage be between 0% and 100%?
TypeScript source • JavaScript source
Calculates the absolute distance between given values.
Type signature
(a: number, b: number) => number
Questions
- How to calculate an absolute distance between two numbers?
TypeScript source • JavaScript source
Checks if the given value is in the rectangular range of [0, width] and [0, height]
Type signature
(width: number, height: number) => ((x: number, y: number) => boolean)
Questions
- How to check if a point is inside a rectangle defined by width and height?
TypeScript source • JavaScript source
Linearly interpolates two given values by the normal value of their distance.
Type signature
(t: number) => ((a: number, b: number) => number)
Questions
- How to linearly interpolate between two values?
- How to interpolate two numbers?
TypeScript source • JavaScript source
Calculates the maximum by a given selector.
Type signature
(f: (x: number) => number) => ((xs: number[]) => number)
Examples
maximumBy(({ age }) => age)([
{ age: 13 },
{ age: 20 },
{ age: 7 },
{ age: 18 },
]);
Try in REPL
Questions
- How to find a maximum element by a given function?
TypeScript source • JavaScript source
Calculates the median of the values. If there is an even number of items, the average of the middle ones is returned.
Type signature
(xs?: number[]) => number | undefined
Questions
- How to compute a median of an array?
TypeScript source • JavaScript source
Calculates the minimum and maximum value of the two given values.
Type signature
([a, b]: [number, number]) => [number, number]
Questions
- How to get ordered values where the lower is the first and the higher is the second?
TypeScript source • JavaScript source
Checks if all the given values have the same sign.
Type signature
(xs: number[]) => boolean
Questions
- How to check if all values have the same sign?
TypeScript source • JavaScript source
Calculates the sign of the value and returns -1 for negative values, 1 for positive values and 0 for zeros.
Questions
- How to get a sign of a number?
TypeScript source • JavaScript source
Calculates the standard deviation of the given array of numbers.
Type signature
(xs: number[], origin?: number) => number
Examples
standardDeviation([
96, 81, 68, 79, 23, 13, 13, 59,
44, 86,
]);
Try in REPL
Questions
- How to compute a standard deviation of an array?
TypeScript source • JavaScript source
Subtracts two values.
Type signature
(a: number, b: number) => number
Questions
- How to subtract two numbers?
TypeScript source • JavaScript source
Checks if the given object is present and it is not empty (contains at least one entry).
Type signature
<T>(xs?: GenericObject<T>) => boolean
Questions
- How to check if an object is not empty?
- How to check if an object contains some values?
- How to check if an object is not null or undefined?
TypeScript source • JavaScript source
Applies the given parameters to the given dictionary of functions.
Type signature
<T>(fs: {
[index: string]: (...xs: T[]) => T;
}) => (...xs: T[]) => GenericObject<T>
Examples
const lower = (text) =>
text.toLowerCase();
const upper = (text) =>
text.toUpperCase();
apply({ lower, upper })("TeSt");
Try in REPL
Questions
- How to apply a value over an object of functions?
TypeScript source • JavaScript source
Empty object.
Type signature
GenericObject<unknown>;
export default empty
Questions
- How to get an empty object?
TypeScript source • JavaScript source
Lists key-value pairs (entries) present in the given object.
Questions
- How to get entries of an object?
- How to get an array of key-value pairs of an object?
TypeScript source • JavaScript source
Creates a 1 to 1 mapping of the given values as an object.
Type signature
(...xs: string[]) => object
Questions
- How to create an object of the same keys and values?
TypeScript source • JavaScript source
Checks if two objects are deeply equal.
Type signature
(a: unknown, b: unknown) => boolean;
export default equalsDeep
Questions
- How to check if two objects are equal?
- How to check deep object equality?
TypeScript source • JavaScript source
Test if every element passes the given predicate.
Type signature
<T>(f: (value: T, key: string, context: object) => boolean) => (xs: GenericObject<T>) => boolean
Examples
every((x) => x >= 0)({
x: 5,
y: 3,
z: 0,
});
Try in REPL
every((x) => x > 0)({
x: 5,
y: 3,
z: 0,
});
Try in REPL
Questions
- How to check if every entry in an object passes a given predicate?
TypeScript source • JavaScript source
Filters the given object with the given predicate.
Type signature
<T>(f: (value: T, key: string, context: object) => boolean) => (xs: GenericObject<T>) => GenericObject<T>
Examples
filter((x) => x % 2 !== 0)({
a: 1,
b: 2,
c: 3,
});
Try in REPL
TypeScript source • JavaScript source
Searches the given object by the given predicate and returns the found value or undefined.
Type signature
<T>(predicate: (value: T, key: string, context: object) => boolean) => (xs: GenericObject<T>) => T | undefined
Examples
find(({ x }) => x % 2 === 0)({
a: { x: 1 },
b: { x: 2 },
c: { x: 3 },
});
Try in REPL
Questions
- How to find the value of an object by a predicate function?
TypeScript source • JavaScript source
Searches the given object by the given predicate and returns the found entry or undefined.
Type signature
<T>(predicate: (value: T, key: string, context: GenericObject<T>) => boolean) => (xs: GenericObject<T>) => [string, T] | undefined
Examples
findEntry(({ x }) => x % 2 === 0)({
a: { x: 1 },
b: { x: 2 },
c: { x: 3 },
});
Try in REPL
Questions
- How to find an entry of an object by a predicate function?
TypeScript source • JavaScript source
Searches the given object by the given predicate and returns the found key or undefined.
Type signature
<T>(predicate: (value: T, key: string, context: object) => boolean) => (xs: GenericObject<T>) => string | undefined
Examples
findKey(({ x }) => x % 2 === 0)({
a: { x: 1 },
b: { x: 2 },
c: { x: 3 },
});
Try in REPL
Questions
- How to find a key of an object by a predicate function?
TypeScript source • JavaScript source
Returns the first value in the given object. Follows the default object iteration order.
Type signature
<T>(xs: GenericObject<T>) => T | undefined
Questions
- How to get the first value of an object?
TypeScript source • JavaScript source
Flat maps the values of the given object.
Type signature
<T, TResult>(f: (value: T, key: string, context: GenericObject<T>) => TResult[]) => (xs: GenericObject<T>) => TResult[]
Examples
flatMapValues((x) => [x, x * 2])({
a: 1,
b: 2,
c: 3,
});
Try in REPL
Questions
- How to flat map an object?
TypeScript source • JavaScript source
Creates an object from an array of key-value pairs (entries).
Type signature
<T>(entries: [string, T][]) => Result<T>
Examples
fromEntries([
["a", 1],
["b", 2],
["c", 3],
]);
Try in REPL
Questions
- How to create an object from an array of key-value pairs?
- How to create an object from an array of entries?
TypeScript source • JavaScript source
Groups the given array of values by the given key selector.
Type signature
(selector: (x: unknown) => string) => (xs: unknown[]) => Result
Examples
groupBy((x) =>
x % 2 == 0 ? "even" : "odd",
)([1, 2, 3, 4, 5, 6, 7]);
Try in REPL
Questions
- How to group an array by a key function?
TypeScript source • JavaScript source
Checks if the given key is present in the object.
Type signature
(key: string) => (xs?: unknown) => boolean
Examples
hasKey("c")({ a: 1, b: 2, c: 3 });
Try in REPL
Questions
- How to check if an object contains a given key?
TypeScript source • JavaScript source
Returns the last value in the given object. Follows the default object iteration order.
Type signature
<T>(xs: GenericObject<T>) => T | undefined
Questions
- How to get the last value of an object?
TypeScript source • JavaScript source
Returns the number of entries within the given object.
Type signature
<T>(xs: GenericObject<T>) => number
Questions
- How to check how many entries are in an object?
TypeScript source • JavaScript source
Maps the given object with the given function.
Type signature
<T, TResult>(f: (value: T, key: string, context: object) => TResult) => (xs: GenericObject<T>) => GenericObject<TResult>
Examples
map((x) => x ** 2)({
a: 1,
b: 2,
c: 3,
});
Try in REPL
Questions
- How to map an object?
- How to transform an object?
TypeScript source • JavaScript source
Maps entries of the given object.
Type signature
<T, TResult>(f: (value: T, key: string, context: object) => TResult) => (xs: GenericObject<T>) => [string, TResult][]
Examples
mapEntries((x) => x ** 2)({
a: 1,
b: 2,
c: 3,
});
Try in REPL
Questions
- How to map object entries?
TypeScript source • JavaScript source
Transforms the object keys with the given function.
Type signature
<T>(f: (value: T, key: string, context: object) => string) => (xs: GenericObject<T>) => GenericObject<T>
Examples
mapKeys((_, key) =>
key.toUpperCase(),
)({ a: 1, b: 2, c: 3 });
Try in REPL
Questions
- How to map object keys?
- How to transform object keys?
TypeScript source • JavaScript source
Maps and returns an array of transformed object values.
Type signature
<T, TResult>(f: (value: T, key: string, context: object) => TResult) => (xs: GenericObject<T>) => TResult[]
Examples
mapValues((x) => x ** 2)({
a: 1,
b: 2,
c: 3,
});
Try in REPL
Questions
- How to map object values?
TypeScript source • JavaScript source
Merges two objects deeply.
Type signature
(a: GenericObject, b: GenericObject) => GenericObject;
export default merge
Examples
merge({ a: 1, b: 3 }, {});
Try in REPL
merge({ a: 1, b: 3 }, { b: 7 });
Try in REPL
merge(
{ a: 1, b: 3 },
{ b: { d: 8 } },
);
Try in REPL
merge(
{ a: 1, b: { c: 3 } },
{ b: { d: 8 } },
);
Try in REPL
Questions
- How to merge two objects together?
- How to deeply merge two objects?
TypeScript source • JavaScript source
Checks if the given object is empty.
Type signature
<T>(xs?: GenericObject<T>) => boolean
Questions
- How to check if an object is empty?
- How to check if an object is null or undefined?
TypeScript source • JavaScript source
Test if any element passes the given predicate.
Type signature
<T>(f: (value: T, key: string, context: object) => boolean) => (xs: GenericObject<T>) => boolean
Examples
some((x) => x >= 4)({
x: 5,
y: 3,
z: 0,
});
Try in REPL
some((x) => x < 0)({
x: 5,
y: 3,
z: 0,
});
Try in REPL
Questions
- How to check if any entry in an object passes a given predicate?
TypeScript source • JavaScript source
Sorts the given object by a comparator.
Type signature
<T>(f: (a: T, b: T) => number) => (xs: GenericObject<T>) => GenericObject<T>
Examples
sort({
a: 3,
b: 2,
c: 3,
d: -7,
e: 13,
f: 0,
g: 8,
});
Try in REPL
TypeScript source • JavaScript source
Parses a query string into an object.
Type signature
(xs?: string) => {
[index: string]: string | boolean;
}
Questions
- How to parse a query string?
TypeScript source • JavaScript source
Parses the given query string into an object using URLSearchParams.
Type signature
(source: string) => Result
Questions
- How to parse a query string using URLSearchParams?
TypeScript source • JavaScript source
Serializes the given object into a query string.
Type signature
<T>(xs?: GenericObject<T>) => string
Examples
serialize({
test: true,
value: "a string with spaces",
missing: false,
});
Try in REPL
Questions
- How to serialize an object to a query string?
TypeScript source • JavaScript source
Checks if the given range is empty.
Type signature
([min, max]: [number, number]) => boolean
Questions
- How to check if a given range is empty (0-length)?
TypeScript source • JavaScript source
Checks if the given ranges are equal.
Type signature
([a, b]: [number, number], [c, d]: [number, number]) => boolean
Questions
- How to check if two ranges are equal?
TypeScript source • JavaScript source
Computes the signed length of the given range.
Type signature
([min, max]: [number, number]) => number
Questions
- How to compute a signed length of a range?
TypeScript source • JavaScript source
Splits the given range into subranges by excluding the given used ranged.
Type signature
(used: [number, number][], sourceRange?: number[]) => (range: [number, number]) => [number, number][];
export default split
Questions
- How to split a range into subranges?
TypeScript source • JavaScript source
Escapes regex string into proper regex.
Type signature
(string: string) => string
Questions
- How to properly escape a regex string?
TypeScript source • JavaScript source
Checks if the given string contains whitespace.
Questions
- How to check if a string contains whitespace?
TypeScript source • JavaScript source
Empty string.
Questions
- How to get an empty string?
TypeScript source • JavaScript source
Transforms the first character to lowercase.
Questions
- How to make the first letter of a string lowercase?
TypeScript source • JavaScript source
Transforms the first character to uppercase.
Questions
- How to make the first letter of a string uppercase?
TypeScript source • JavaScript source
Checks if the given substring is present in the source string.
Type signature
(search: string) => (text: string) => boolean
Examples
includes("brown fox")(
"The quick brown fox jumps over the lazy dog",
);
Try in REPL
includes("brown dog")(
"The quick brown fox jumps over the lazy dog",
);
Try in REPL
Questions
- How to check if a string contains a given substring?
TypeScript source • JavaScript source
Non-breaking space.
Questions
- How to get a non-breaking space?
TypeScript source • JavaScript source
Checks if the given string is present and is not empty or all whitespace.
Questions
- How to check if a string is non-empty?
- How to check if a string is not all whitespace?
- How to check if a string is not null or undefined?
TypeScript source • JavaScript source
Checks if the given string starts with the given substring.
Type signature
(prefix: string) => (xs: string) => boolean
Examples
startsWith("The")(
"The quick brown fox jumps over the lazy dog",
);
Try in REPL
startsWith("Quick")(
"The quick brown fox jumps over the lazy dog",
);
Try in REPL
Questions
- How to check if a string starts with a given substring?
TypeScript source • JavaScript source
Adds two vectors.
Type signature
([x1, y1]: [number, number], [x2, y2]: [number, number]) => [number, number]
TypeScript source • JavaScript source
Applies transformations to the given vector.
Type signature
(space: {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}) => ([x, y]: [number, number]) => number[]
Examples
convertSpace(rotate(Math.PI))([
2, 3,
]);
Try in REPL
Questions
- How to transform a vector with a matrix?
TypeScript source • JavaScript source
Calculates a cross product of the given vectors. Returns a scalar.
Type signature
([a, b]: [number, number], [c, d]: [number, number]) => number
Questions
- How to compute a cross product of two vectors?
- How to check on which side of a line a point is?
TypeScript source • JavaScript source
Calculates a dot product of the given vectors. Returns a scalar.
Type signature
([a, b]: [number, number], [c, d]: [number, number]) => number
Questions
- How to compute a dot product of two vectors?
TypeScript source • JavaScript source
Calculates the length/magnitude of the given vector.
Type signature
([x, y]: [number, number]) => number
Questions
- How to compute the length of a vector?
- How to compute the magnitude of a vector?
TypeScript source • JavaScript source
Applies matrix transformation to the given vector.
Type signature
({ a, b, c, d, e, f }: {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}, [x, y]: [number, number]) => number[]
Questions
- How to apply a matrix transformation to a vector?
TypeScript source • JavaScript source
Multiples two matrices.
Type signature
(m1: {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}, m2: {
a: number;
b: number;
c: number;
d: number;
e: number;
f: number;
}) => {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}
Examples
multiply(
{
a: 1,
c: 2,
e: 3,
b: 4,
d: 5,
f: 6,
},
{
a: 7,
c: 8,
e: 9,
b: 10,
d: 11,
f: 12,
},
);
Try in REPL
Questions
- How to multiply two matrices?
TypeScript source • JavaScript source
Normalizes the given vector. Returns [0, 0] vector for points.
Type signature
(vector: [number, number]) => [number, number]
Questions
- How to normalize a vector?
TypeScript source • JavaScript source
Reflects the given vector on the given surface.
Type signature
(a: [number, number], v: [number, number]) => [number, number]
Questions
- How to reflect a vector on another vector?
TypeScript source • JavaScript source
Creates a rotation matrix around given origin [0, 0] by default.
Type signature
(angle?: number, cx?: number, cy?: number) => {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}
Examples
const angle = Math.PI;
const sine = Math.sin(angle);
const cosine = Math.cos(angle);
rotate(angle);
Try in REPL
Questions
- How to create a rotation matrix?
TypeScript source • JavaScript source
Creates a scale matrix.
Type signature
(sx?: number, sy?: number) => {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}
Questions
- How to create a scale matrix?
TypeScript source • JavaScript source
Subtracts two vectors.
Type signature
([x1, y1]: [number, number], [x2, y2]: [number, number]) => [number, number]
Questions
- How to subtract two vectors?
TypeScript source • JavaScript source
Composes a single transformation by matrix multiplication.
Type signature
(...matrices: {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}[]) => {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}
Examples
const originX = 5;
const originY = 6;
const angle = Math.PI;
transform(
translate(originX, originY),
rotate(angle),
translate(-originX, -originY),
);
Try in REPL
Questions
- How to compose multiple matrix transformations into a single matrix?
TypeScript source • JavaScript source
Creates a translation matrix.
Type signature
(tx?: number, ty?: number) => {
a: number;
c: number;
e: number;
b: number;
d: number;
f: number;
}
Questions
- How to create a translation matrix?
TypeScript source • JavaScript source
Composes class name from truthy values with the support of string and objects.
Type signature
(...xs: unknown[]) => string
Examples
classNames("test", {
active: true,
disabled: false,
on: undefined,
});
Try in REPL
Questions
- How to create a class name from an array of strings and/or objects?
TypeScript source • JavaScript source
Stops propagation and prevents the default handler of the given event.
Type signature
(event: {
preventDefault: () => void;
stopPropagation: () => void;
}) => boolean
Examples
const event = {
preventDefault: () =>
console.log("preventDefault"),
stopPropagation: () =>
console.log("stopPropagation"),
};
cancel(event);
Try in REPL
Questions
- How to stop event propagation and prevent default at once?
TypeScript source • JavaScript source
Tests if the current event seems like an intent to open a new tab. Useful for client-side navigation handling.
Type signature
({ button, ctrlKey, metaKey, shiftKey }: {
button?: number;
ctrlKey?: boolean;
metaKey?: boolean;
shiftKey?: boolean;
}) => boolean
Examples
openInNewTabIntent({
ctrlKey: true,
});
Try in REPL
Questions
- How to check if the user wants to open a new tab using history API?
TypeScript source • JavaScript source
Prevents the default handler of the given event.
Type signature
(event: {
preventDefault: () => void;
}) => boolean
Examples
const event = {
preventDefault: () =>
console.log("preventDefault"),
stopPropagation: () =>
console.log("stopPropagation"),
};
prevent(event);
Try in REPL
Questions
- How to prevent default event handler?
TypeScript source • JavaScript source
Stops propagation of the given event.
Type signature
(event: {
stopPropagation: () => void;
}) => boolean
Examples
const event = {
preventDefault: () =>
console.log("preventDefault"),
stopPropagation: () =>
console.log("stopPropagation"),
};
stop(event);
Try in REPL
Questions
- How to stop the propagation of an event?
TypeScript source • JavaScript source