> Как реализовать рекурсивную чистую функцию для инверсии значений в объекте в JavaScript (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: Домклик

Стек: JavaScript

> Пример ответа

Для реализации рекурсивной чистой функции инверсии значений в объекте нужно создать новый объект, где ключи и значения меняются местами. Если значение - объект, применяем рекурсию. Функция должна быть чистой (не мутировать исходные данные).

JAVASCRIPT
function invertObject(obj) {
// Проверка, что входные данные - объект (не null, не массив)
if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
return obj;
}
const inverted = {};
for (const [key, value] of Object.entries(obj)) {
// Если значение - объект, рекурсивно инвертируем его
const invertedValue = invertObject(value);
// Меняем местами: ключ становится значением, значение - ключом
inverted[invertedValue] = key;
}
return inverted;
}
// Пример использования
const original = {
a: 1,
b: { c: 2, d: 3 },
e: 4
};
const result = invertObject(original);
console.log(result);
// { 1: 'a', { 2: 'c', 3: 'd' }: 'b', 4: 'e' }

Особенности:

  • Функция не изменяет исходный объект (чистота).
  • Рекурсия обрабатывает вложенные объекты.
  • Если значения не уникальны, последнее вхождение перезапишет предыдущее (стандартное поведение инверсии).
  • Для простоты предполагается, что значения могут быть преобразованы в строки ключей (числа, строки). Для сложных типов (например, Symbol) потребуется дополнительная обработка.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью