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.
Sort addresses numerically, not lexicographically
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
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);