function compareAddressv4
compareAddressv4(): -1 | 0 | 1

Compares two IPv4 addresses for sorting, numerically ascending.

Suitable as an Array.prototype.sort / toSorted comparator. For a comparator that also accepts IPv6 addresses, see compareAddress, which sorts every IPv4 address before every IPv6 one.

Examples

Sort addresses numerically, not lexicographically

import { assertEquals } from "@std/assert";
import { compareAddressv4, parseAddressv4, stringifyAddressv4 } from "@hertzg/ip/addressv4";

const addresses = ["10.0.0.9", "10.0.0.10", "10.0.0.2"].map((s) => parseAddressv4(s).address);

assertEquals(addresses.toSorted(compareAddressv4).map(stringifyAddressv4), [
  "10.0.0.2",
  "10.0.0.9",
  "10.0.0.10",
]);

The three possible results

import { assertEquals } from "@std/assert";
import { compareAddressv4, parseAddressv4 } from "@hertzg/ip/addressv4";

assertEquals(compareAddressv4(parseAddressv4("10.0.0.1").address, parseAddressv4("10.0.0.2").address), -1);
assertEquals(compareAddressv4(parseAddressv4("10.0.0.2").address, parseAddressv4("10.0.0.1").address), 1);
assertEquals(compareAddressv4(parseAddressv4("10.0.0.1").address, parseAddressv4("10.0.0.1").address), 0);

Parameters

The first address

The second address

Return Type

-1 | 0 | 1

-1 if a sorts before b, 1 if after, 0 if equal

Usage

import { compareAddressv4 } from "addressv4.ts";