Эффективные способы инвертировать пары ключ-значение в TypeScript

Инвертирование пар ключ-значение — распространенная операция в программировании, особенно при работе с объектами или словарями. В TypeScript есть несколько методов, которые можно использовать для эффективного инвертирования пар ключ-значение. В этой статье мы рассмотрим некоторые из этих методов вместе с примерами кода, демонстрирующими их использование.

Метод 1: использование цикла for…in
Один простой способ инвертировать пары ключ-значение — использовать цикл for…in для перебора исходного объекта и создания нового объекта с инвертированными ключами и значениями. Вот пример:

function invertObject(obj: Record<string, any>): Record<string, any> {
  const invertedObj: Record<string, any> = {};
  for (const key in obj) {
    const value = obj[key];
    invertedObj[value] = key;
  }
  return invertedObj;
}
const originalObj = { a: 1, b: 2, c: 3 };
const invertedObj = invertObject(originalObj);
console.log(invertedObj);

Выход:

{ '1': 'a', '2': 'b', '3': 'c' }

Метод 2: использование метода Object.entries()
Другой подход — использовать метод Object.entries()для получения массива пар ключ-значение из исходного объекта. Затем вы можете использовать метод Array.reduce()для создания нового объекта с инвертированными парами. Вот пример:

function invertObject(obj: Record<string, any>): Record<string, any> {
  return Object.entries(obj).reduce((acc, [key, value]) => {
    acc[value] = key;
    return acc;
  }, {});
}
const originalObj = { a: 1, b: 2, c: 3 };
const invertedObj = invertObject(originalObj);
console.log(invertedObj);

Выход:

{ '1': 'a', '2': 'b', '3': 'c' }

Метод 3: использование функции mapValues() из библиотеки lodash.
Если вы уже используете библиотеку lodash в своем проекте TypeScript, вы можете использовать функцию mapValues()для инвертирования ключей. пары значений. Вот пример:

import { mapValues } from 'lodash';
const originalObj = { a: 1, b: 2, c: 3 };
const invertedObj = mapValues(originalObj, (value, key) => key);
console.log(invertedObj);

Выход:

{ '1': 'a', '2': 'b', '3': 'c' }

Инвертирование пар ключ-значение — распространенная задача при разработке TypeScript. Мы рассмотрели три метода достижения этой цели: использование цикла for…in, использование метода Object.entries() и использование функции mapValues()из библиотеки lodash. Применяя эти методы, вы можете эффективно инвертировать пары «ключ-значение» в проектах TypeScript и оптимизировать свой код.