invertBy
import { invertBy } from "jsr:@ende/collections";function
function invertBy<R extends Record<PropertyKey, PropertyKey>, T extends (key: PropertyKey) => PropertyKey>(record: Readonly<R>, transformer: T): InvertByResult<R, keyof R>Composes a new record with all keys and values inverted.
The new record is generated from the result of running each element of the input record through the given transformer function.
The corresponding inverted value of each inverted key is an array of keys responsible for generating the inverted value.
record: Readonly<R>The record to invert.
transformer: TThe function to transform keys.
Returns
A new record with all keys and values inverted.
Example: Basic usage
import { invertBy } from "@ende/collections/invert-by";
import { assertEquals } from "@ende/assert";
const record = { a: "x", b: "y", c: "z" };
assertEquals(
invertBy(record, (key) => String(key).toUpperCase()),
{ X: ["a"], Y: ["b"], Z: ["c"] }
);