> Как реализовать рекурсивную чистую функцию для инверсии значений в объекте в JavaScript (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: Домклик
Стек: JavaScript
> Пример ответа
Для реализации рекурсивной чистой функции инверсии значений в объекте нужно создать новый объект, где ключи и значения меняются местами. Если значение - объект, применяем рекурсию. Функция должна быть чистой (не мутировать исходные данные).
JAVASCRIPTfunction 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) потребуется дополнительная обработка.
> Похожие задачи по frontend
Что делает метод hasOwnProperty в JavaScript
Уровень: middleКатегория: Технические вопросы
Компания: EvApps
Стек: JavaScript
Что возвращает typeof для массива в JavaScript
Уровень: middleКатегория: Технические вопросы
Компания: YADRO
Стек: JavaScript
Что такое замыкания в JavaScript и для чего они нужны
Уровень: juniorКатегория: Технические вопросы
Компания: Иннотех, Kvando Technologies, циан, ООО Премиум ИТ Солюшен, EvApps, VK, Инити, ITFB, Aston, IT-One, Софт Медиа Групп, Библио-Глобус, ООО Рокет Тех, Rutube, Avito, Exness, Сбер, Исходный Код, Evercode, Purrweb, Кэтрид Диджитал, SmartWay, Яндекс
Стек: JavaScript
Как записывать ошибки в массив по индексу, соответствующему индексу промиса в JavaScript?
Уровень: seniorКатегория: Технические вопросы
Компания: Яндекс
Стек: JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью