@utilityjs/comparator
v2.0.0
Published
A utility class that compares its comparable arguments.
Maintainers
Readme
UtilityJS | Comparator
A utility class for comparing values with customizable comparison functions.
Features
- Custom Comparison Functions: Support for user-defined comparison logic
- Type Safety: Full TypeScript generic support
- Comparison Methods: Equal, less than, greater than, and their inclusive variants
Installation
npm install @utilityjs/comparatoror
pnpm add @utilityjs/comparatorUsage
Basic Usage
import { Comparator } from "@utilityjs/comparator";
const comparator = new Comparator<number>();
comparator.isEqual(1, 1); // true
comparator.isLessThan(1, 2); // true
comparator.isGreaterThan(2, 1); // trueCustom Comparison Function
import { Comparator, CompareFunction } from "@utilityjs/comparator";
interface Person {
name: string;
age: number;
}
const compareByAge: CompareFunction<Person> = (a, b) => {
if (a.age === b.age) return 0;
return a.age < b.age ? -1 : 1;
};
const comparator = new Comparator(compareByAge);
const alice = { name: "Alice", age: 30 };
const bob = { name: "Bob", age: 25 };
comparator.isLessThan(bob, alice); // true
comparator.isGreaterThanOrEqual(alice, bob); // trueAPI
CompareFunction<T>
type CompareFunction<T> = (a: T, b: T) => -1 | 0 | 1;Comparator<T>
Static Methods
Comparator.defaultComparatorFunction<T>(a: T, b: T): -1 | 0 | 1- Default comparison using JavaScript operators
Constructor
new Comparator<T>(compareFunction?: CompareFunction<T>)- Creates a comparator with optional custom function
Methods
isEqual(a: T, b: T): boolean- Check if values are equalisLessThan(a: T, b: T): boolean- Check if a < bisLessThanOrEqual(a: T, b: T): boolean- Check if a <= bisGreaterThan(a: T, b: T): boolean- Check if a > bisGreaterThanOrEqual(a: T, b: T): boolean- Check if a >= b
Contributing
Read the contributing guide to learn about our development process, how to propose bug fixes and improvements, and how to build and test your changes.
License
This project is licensed under the terms of the MIT license.
