comparing

Easily create descriptive comparators

Usage no npm install needed!

<script type="module">
  import comparing from 'https://cdn.skypack.dev/comparing';
</script>

README

comparing

npm documentation minified + gzip Build codecov

Easily create descriptive comparators.

Features

Make sure to checkout the documentation.

Installation

npm i comparing

Usage

import {
  naturalOrder,
  reverseComparator,
  composeComparators,
  ignoreCase,
  compareBy,
  comparatorOfOrder,
  Comparator,
} from 'comparing';

// chose from various available Comparators
const simple = [4, 1, 3, 5].sort(naturalOrder);
expect(simple).toEqual([1, 3, 4, 5]);

// start with your own simple function
const myCompareFn: Comparator<string> = (a, b) => a.charCodeAt(0) - b.charCodeAt(0);
// create "then ..." comparisons with compose
const complex: Comparator<string> = composeComparators([
  // reverse any comparator
  reverseComparator(myCompareFn),
  // compare by a certain field or other values via `compareBy`
  compareBy((x) => x.charAt(1), ignoreCase),
]);
const result = ['aB', 'bB', 'aa'].sort(complex);
expect(result).toEqual(['bB', 'aa', 'aB']);

// define your own order for known values
const myEnumComparator = comparatorForOrder([MyEnum.C, MyEnum.A, MyEnum.B]);
const myDataComparator = compareBy((data) => data.type, myEnumComparator);