Skip to main content

invert

주어진 객체의 각 키와 값을 반전하여 새로운 객체를 생성합니다.

기본적으로 객체의 키와 값을 반전하지만, iteratee 함수를 제공하면 각 값에 대해 변형된 키를 생성하여 반전할 수 있습니다.


Code

🔗 실제 구현 코드 확인

Default

이름hzmean성능
modern-kit/invert6,119,008.750.0002fastest
lodash/invert4,459,920.520.0003slowest
  • modern-kit/invert
    • 1.37x faster than lodash/invert

with iteratee

이름hzmean성능
modern-kit/invert4,154,655.710.0003fastest
lodash/invertBy2,262,596.790.0004slowest
  • modern-kit/invert
    • 1.84x faster than lodash/invertBy

Interface

typescript
function invert<K extends PropertyKey, V extends PropertyKey>(
obj: Record<K, V>
): Record<V, K>;

function invert<K extends PropertyKey, V, TK extends PropertyKey>(
obj: Record<K, V>,
iteratee: (iterateData: { value: V; key: K; obj: Record<K, V> }) => TK
): Record<TK, K>;

Usage

Default

typescript
import { invert } from '@modern-kit/utils';

const obj = { a: 1, b: 2, c: 3 };

invert(obj);
// value: { 1: 'a', 2: 'b', 3: 'c' };
// type: Record<number, "a" | "b" | "c">

with iteratee

typescript
import { invert } from '@modern-kit/utils';

const obj = {
a: { name: 'foo' },
b: { name: 'bar' },
} as const;

invert(obj, (value) => value.name);
// value: { foo: 'a', bar: 'b' }
// type: Record<"foo" | "bar", "a" | "b">