This library provides a set of functions for working with arrays in TypeScript. The functions include:
sort: returns a new array with the elements sorted any direction by any propertyfilter: returns a new array with only the elements that match the predicatetransform: returns a new array with the elements transformed by the transformer functionincludes: returns a boolean indicating whether the element is in the arraymin: returns the minimum element in the array, orundefinedif the array is emptymax: returns the maximum element in the array, orundefinedif the array is emptysum: returns the sum of all elements in the arrayaverage: returns the average of all elements in the array, or 0 if the array is emptydistinct: returns a new array with only distinct elementsshuffle: returns a new array with the same elements, but in a shuffled orderflatten: Flattens an array of nested arrays into a single array.uniqueElements: Returns an array with only the unique elements from the input array.groupBy: Groups the elements of an array based on the result of a callback function.partition: Divides an array into two arrays based on the result of a callback function.intersection: Returns an array with the elements that exist in both input arrays.difference: Returns an array with the elements that exist in the first input array but not the second.removeDuplicates: Removes duplicates from an array in place.chunk: Divides an array into smaller arrays of a given size.randomSample: Returns an array with a random sample of elements from the input array.mean: Returns the mean of an array of numbers.median: Returns the median of an array of numbers.mode: Returns the mode of an array of numbers.variance: Returns the variance of an array of numbers.standardDeviation: Returns the standard deviation of an array of numbers.countOccurrences: Returns the number of occurrences of a given element in an array.zip: Returns an array of arrays, where each array contains elements of the input arrays at corresponding indices.unzip: Returns an array of arrays, where each array contains elements of the input array of arrays at corresponding indices.rotate: Rotates the elements of an array by a given number of positions.flip: Reverses the order of elements in an array.mirror: Returns a new array which is the concatenation of the input array and its reversed version.isSorted: Returns whether an array or object is sorted based on a provided comparison function, direction, and key.isEqual: Returns whether two arrays are equal in terms of elements and order.swap: Swaps the position of two elements in an array.move: Moves an element from one position to another in an array.fill: Fills an array with a specified value.reverseFill: Fills an array in reverse order with a specified value.findFirst: Returns the first element that satisfies a provided callback function.findLast: Returns the last element that satisfies a provided callback function.remove: Removes elements from an array at a given index and count.insert: Inserts elements into an array at a given index.merge: Merges two arrays into one.pad: Pads an array with a specified value and repeat times. repeat: Returns an array with a repeated element.range: Returns an array with the minimum and maximum elements in an array of numbers.countBy: Groups the elements of an array and counts the number of elements in each group.deepSearch: Finds patterns, in strings, arrays, objects or nested combinations and returns the index of the match."
These functions can be useful for performing various operations on arrays in a concise and readable way.
The sort method returns a new array with the elements sorted any direction by any property.
import { sort } from 'ts-array-utilities';
const array = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 }
];
const sortedArray = sort(array, 'desc', 'age');
console.log(sortedArray); // [{ name: 'Charlie', age: 35 }, { name: 'Alice', age: 30 }, { name: 'Bob', age: 25 }]
The filter method returns a new array with only the elements that match the predicate.
import { filter } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
const filteredArray = filter(array, n => n \> 2);
console.log(filteredArray); // [3, 4, 5]
const objectArray = [
{ name: 'Alice', age: 30 },
{ name: 'Bob', age: 25 },
{ name: 'Charlie', age: 35 }
];
const filteredObjectArray = filter(objectArray, person => person.age \> 30);
console.log(filteredObjectArray); // [{ name: 'Charlie', age: 35 }]
// Filter an array of objects by a property
const filteredObjectArrayByProperty = filter(objectArray, 'age', 30);
console.log(filteredObjectArrayByProperty); // [{ name: 'Alice', age: 30 }]
// Filter an array of objects by a property and a predicate
const filteredObjectArrayByPropertyAndPredicate = filter(objectArray, 'age', age => age \> 30);
console.log(filteredObjectArrayByPropertyAndPredicate); // [{ name: 'Charlie', age: 35 }]
The transform method returns a new array with the elements transformed by the transformer function.
import { transform } from 'ts-array-utilities';
const array = [1, 2, 3];
const transformedArray = transform(array, n => n \* 2);
console.log(transformedArray); // [2, 4, 6]
The includes function is a utility for searching for an element in an array. It can search for any type of value, including numbers, strings, objects, and arrays.
It can also search for elements in nested arrays.
import { includes } from 'ts-array-utilities';
const arr = [1, 2, [3, 4], [5, [6, 7]]];
console.log(includes(arr, 3)); // 3
console.log(includes(arr, 6)); // 6
console.log(includes(arr, 8)); // undefined
console.log(includes(['hello', 'world', 'foo', 'bar'], 'foo')); // 'foo'
console.log(includes(['hello', 'world', 'foo', 'bar'], 'baz')); // undefined
const nested = ['a', ['b', 'c', ['d', 'e']], 'f'];
console.log(includes(nested, 'a')); // 'a'
console.log(includes(nested, 'c')); // 'c'
console.log(includes(nested, 'e')); // 'e'
console.log(includes(nested, 'x')); // undefined
The min function returns the minimum value in the array, accept an optional key parameter that allows you to specify a property to use for the min calculation.
import { min } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
// Find the minimum value in the array
const minValue = min(array);
console.log(minValue); // 1
// Find the minimum value of the 'key' property in an array of objects
const objectArray = [{ key: 5 }, { key: 3 }, { key: 1 }, { key: 4 }, { key: 2 }];
const minObjectValue = min(objectArray, 'key');
console.log(minObjectValue); // { key: 1 }
The max medthod returns the maximum value in the array, accept an optional key parameter that allows you to specify a property to use for the max calculation.
import { max } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
// Find the maximum value in the array
const maxValue = max(array);
console.log(maxValue); // 5
// Find the maximum value of the 'key' property in an array of objects
const objectArray = [{ key: 5 }, { key: 3 }, { key: 1 }, { key: 4 }, { key: 2 }];
const maxObjectValue = max(objectArray, 'key');
console.log(maxObjectValue); // { key: 5 }
The sum method returns the sum of all elements in the array.
import { sum } from 'ts-array-utilities';
const array = [1, 2, 3];
const total = sum(array);
console.log(total); // 6
The average method calculates the average of all the number values inside an array or object, and counts string values that contain numbers as well.
import { average } from './average';
const data = {
a: 1,
b: 2,
c: '3',
d: [4, 5, 6],
e: {
f: 7,
g: 8,
},
h: '9',
};
console.log(average(data)); // Outputs 4.5
The distinct method returns a new array with only distinct elements.
import { distinct } from 'ts-array-utilities';
const array: number[] = [1, 2, 2, 3, 3, 3];
const distinctArray: number[] = distinct(array);
console.log(distinctArray); // [1, 2, 3]
The shuffle method returns a new array with the same elements, but in a shuffled order.
import { shuffle } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
const shuffledArray = shuffle(array);
console.log(shuffledArray); // [3, 1, 5, 2, 4] (the order may be different)
const objectArray = [{ key: 1 }, { key: 2 }, { key: 3 }];
const shuffledObjectArray = shuffle(objectArray);
console.log(shuffledObjectArray); // [{ key: 2 }, { key: 3 }, { key: 1 }]
const stringArray = ['a', 'b', 'c', 'd', 'e'];
const shuffledStringArray = shuffle(stringArray);
console.log(shuffledStringArray); // ['c', 'e', 'a', 'b', 'd']
const nestedArray = [[1, 2], [3, 4], [5, 6]];
const shuffledNestedArray = shuffle(nestedArray);
console.log(shuffledNestedArray); // [[5, 6], [1, 2], [3, 4]]
const nestedObjectArray = [{ key: [1, 2] }, { key: [3, 4] }, { key: [5, 6] }];
const shuffledNestedObjectArray = shuffle(nestedObjectArray);
console.log(shuffledNestedObjectArray); // [{ key: [5, 6] }, { key: [1, 2] }, { key: [3, 4] }]
const nestedStringArray = [['a', 'b'], ['c', 'd'], ['e', 'f']];
const shuffledNestedStringArray = shuffle(nestedStringArray);
console.log(shuffledNestedStringArray); // [['e', 'f'], ['a', 'b'], ['c', 'd']]
const nestedMixedArray = [[1, 2], ['a', 'b'], [{ key: 1 }, { key: 2 }]];
const shuffledNestedMixedArray = shuffle(nestedMixedArray);
console.log(shuffledNestedMixedArray); // [['a', 'b'], [{ key: 1 }, { key: 2 }], [1, 2]]
The flatten method flattens an array of arbitrarily nested arrays of any type into a flat array.
import { flatten } from 'ts-array-utilities';
const nestedArray = [1, [2, [3, [4]]]];
const flatArray = flatten(nestedArray);
// flatArray: [1, 2, 3, 4]
const moreNestedArray = [1, 2, [3, [4, 5], 6, [[[7, 8]]]], 9];
const moreFlatArray = flatten(moreNestedArray);
// moreFlatArray: [1, 2, 3, 4, 5, 6, 7, 8, 9]
The uniqueElements method returns an array with all the unique elements of the input array.
import { uniqueElements } from 'ts-array-utilities';
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const uniqueArray = uniqueElements(array);
// [1, 2, 3, 4, 5]
The groupBy Groups the elements of the array by the result of calling callback on each element. Returns an object where the keys are the values returned by callback and the values are arrays containing the elements that returned that value.
import { groupBy } from 'ts-array-utilities';
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
// Group the elements of the array by their parity (even or odd)
const groupedArray = groupBy(array, (element) => element % 2 === 0);
// { 'true': [2, 4, 4, 4], 'false': [1, 3, 3, 5, 5] }
The partition method partitions the array into two arrays based on the result of calling callback on each element. The first array contains the elements for which callback returned true, and the second array contains the elements for which callback returned false.
import { partition } from 'ts-array-utilities';
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
// Partition the array into even and odd numbers
const partitionedArray = partition(array, (element) => element % 2 === 0);
// [[2, 4, 4, 4], [1, 3, 3, 5, 5]]
The intersection method returns an array containing the elements that are present in both array1 and array2.
import { intersection } from 'ts-array-utilities';
// Calculate the intersection of the array with itself
const intersectedArray = intersection(array, array);
// [1, 2, 3, 3, 4, 4, 4, 5, 5]
The difference method returns an array containing the elements that are present in array1 but not in array2.
import { difference } from 'ts-array-utilities';
// Calculate the difference between the array and itself
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const diffedArray = difference(array, array);
// []
The removeDuplicates method removes duplicate elements from the array.
chunk(array, size): Splits the array into an array of smaller arrays, each with a maximum length of size.
import { removeDuplicates } from 'ts-array-utilities';
// Remove duplicates from the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
removeDuplicates(array);
// [1, 2, 3, 4, 5]
The chunk method splits the array into an array of smaller arrays, each with a maximum length of size.
import { chunk } from 'ts-array-utilities';
// Split the array into chunks of size 2
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const chunkedArray = chunk(array, 2);
// [[1, 2], [3, 4], [5]]
The randomSample method returns an array of size random elements from the array.
import { randomSample } from 'ts-array-utilities';
// Select 3 random elements from the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const randomSample = randomSample(array, 3);
The mean method calculates the mean (average) of the numbers in the array.
import { mean } from 'ts-array-utilities';
// Calculate the mean of the elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const meanValue = mean(array);
// 3
The median method calculates the median of the numbers in the array.
import { median } from 'ts-array-utilities';
// Calculate the median of the elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const medianValue = median(array);
// 3
The mode method calculates the mode (most common value) of the numbers in the array.
import { mode } from 'ts-array-utilities';
// Calculate the mode of the elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const modeValue = mode(array);
// 3 or 4 (either value is the most common in the array)
The variance method calculates the variance of the numbers in the array.
import { variance } from 'ts-array-utilities';
// Calculate the variance of the elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const varianceValue = variance(array);
// 2.5
The standardDeviation method calculates the standard deviation of the numbers in the array.
import { standardDeviation } from 'ts-array-utilities';
// Calculate the standard deviation of the elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const standardDeviationValue = standardDeviation(array);
// 1.5811388300841898
The countOccurrences method returns the number of occurrences of a given element in an array.
import { countOccurrences } from 'ts-array-utilities';
const array = [1, 2, 3, 2, 4, 2, 5]; const count = countOccurrences(array, 2); console.log(count); // 3
The zip method returns an array of arrays, where each array contains elements of the input arrays at corresponding indices.
import { zip } from 'ts-array-utilities';
const array1 = [1, 2, 3]; const array2 = ['a', 'b', 'c']; const array3 = [true, false, true]; const zipped = zip(array1, array2, array3); console.log(zipped); // [[1, 'a', true], [2, 'b', false], [3, 'c', true]]
The unzip method returns an array of arrays, where each array contains elements of the input array of arrays at corresponding indices.
import { unzip } from 'ts-array-utilities';
const array = [[1, 'a', true], [2, 'b', false], [3, 'c', true]]; const unzipped = unzip(array); console.log(unzipped); // [[1, 2, 3], ['a', 'b', 'c'], [true, false, true]]
The rotate method rotates the elements of an array by a given number of positions.
import { rotate } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5]; const rotated = rotate(array, 2); console.log(rotated); // [4, 5, 1, 2, 3]
The flip method reverses the order of elements in an array.
import { flip } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5]; const flipped = flip(array); console.log(flipped); // [5, 4, 3, 2, 1]
The mirror method returns a new array which is the concatenation of the input array and its reversed version.
import { mirror } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
const mirrored = mirror(array);
console.log(mirrored); // [1, 2, 3, 4, 5, 5, 4, 3, 2, 1]
The isSorted function is a utility function that can be used to determine if an array or object's values are sorted in a specified order.
import { isSorted } from 'isSorted';
const numbers = [1, 2, 3, 4, 5];
console.log(isSorted(numbers, (a, b) => a - b)); //true
const names = ['John', 'Mike', 'Sara', 'Zack'];
console.log(isSorted(names, (a, b) => a.localeCompare(b), 'desc')); // false
const obj = {a: {x:1}, b: {x:2}, c: {x:3}};
console.log(isSorted(obj, (a, b) => a - b, 'asc', 'x')); // true
The isEqual method returns whether two arrays are equal interns of elements and order.
import { isEqual } from 'ts-array-utilities';
const array1 = [1, 2, 3];
const array2 = [1, 2, 3];
const equal = isEqual(array1, array2);
console.log(equal); // true
The swap method swaps the position of two elements in an array.
import { swap } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
swap(array, 1, 3);
console.log(array); // [1, 4, 3, 2, 5]
The move method moves an element from one position to another in an array.
import { move } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
move(array, 1, 3);
console.log(array); // [1, 3, 4, 2, 5]
The fill method fills an array with a specified value.
import { fill } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
fill(array, 0);
console.log(array); // [0, 0, 0, 0, 0]
The reverseFill method fills an array in reverse order with a specified value.
import { reverseFill } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
reverseFill(array, 0);
console.log(array); // [0, 0, 0, 0, 0]
The findFirst method returns the first element that satisfies a provided callback function.
import { findFirst } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
const firstEven = findFirst(array, (element) => element % 2 === 0);
console.log(firstEven); // 2
The findLast method returns the last element that satisfies a provided callback function.
import { findLast } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
const lastEven = findLast(array, (element) => element % 2 === 0);
console.log(lastEven); // 4
The remove method removes elements from an array at a given index and count.
import { remove } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
remove(array, 1, 2);
console.log(array); // [1, 4, 5]
The insert method inserts elements into an array at a given index.
import { insert } from 'ts-array-utilities';
const array = [1, 2, 3, 4, 5];
insert(array, 1, 6, 7);
console.log(array); // [1, 6, 7, 2, 3, 4, 5]
The merge method merges two arrays into one.
import { merge } from 'ts-array-utilities';
const array1 = [1, 2, 3];
const array2 = [4, 5, 6];
const merged = merge(array1, array2);
console.log(merged); // [1, 2, 3, 4, 5, 6]
The pad method pads an array with a specified value and repeat times.
import { pad } from 'ts-array-utilities';
const array = [1, 2, 3];
const padded = pad(array, 0, 2);
console.log(padded); // [0, 0, 1, 2, 3, 0, 0]
The repeat method returns an array with a repeated element.
import { repeat } from 'ts-array-utilities';
const repeated = repeat(1, 5);
console.log(repeated); // [1, 1, 1, 1, 1]
The range method calculates the minimum and maximum values in the array.
import { range } from 'ts-array-utilities';
// Calculate the minimum and maximum values in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const rangeValue = range(array);
// [1, 5]
The countBy method counts the number of occurrences of each value in the array based on the result of calling callback on each element. Returns an object where the keys are the values returned by callback and the values are the number of occurrences of that value in the array.
import { countBy } from 'ts-array-utilities';
// Count the number of even and odd elements in the array
const array = [1, 2, 3, 3, 4, 4, 4, 5, 5];
const countByValue = countBy(array, (element) => element % 2 === 0);
// { 'true': 2, 'false': 3 }
The deepSearch method finds patterns, including nested patterns, in an input, which can be an array, string, or object. It returns the index of the match if found, otherwise it returns undefined.
// strings:
const input = "Hello World";
const pattern = "World";
const matchIndex = deepSearch(input, pattern);
console.log(matchIndex) // 6
// objects:
const input = {name: 'John', age: 25, location: 'New York'};
const pattern = {name: 'John'};
const matchIndex = deepSearch(input, pattern);
console.log(matchIndex) // 0
// arrays:
const input = ["apple","banana","cherry","date","elderberry"];
const pattern = ["date","elderberry"];
const matchIndex = deepSearch(input, pattern);
console.log(matchIndex) // 3
// object with nested objects:
const input = {
name: "John",
age: 25,
education: {
degree: "BS",
major: "Computer Science",
university : "NYU"
},
location: "New York"
}
const pattern = {education: {degree: "BS", major: "Computer Science"}};
const matchIndex = deepSearch(input, pattern);
console.log(matchIndex) // 0