Войти Регистрация
Фронтенд

12. Плоские ключи настроек карты Альфы

Лёгкая

Настройки карты в приложении Альфа-Банка хранятся вложенным объектом, а система аналитики принимает только плоские пары «ключ — значение». Напишите flatten(obj).

Вложенные объекты разворачиваются в ключи через точку: {user: {card: {type: 'debit'}}} → {'user.card.type': 'debit'}. Массивы, null и пустые объекты не разворачиваются — это значения. Порядок ключей — как при обходе в глубину.

В работе: Отправка параметров в аналитику, сравнение настроек, ключи переводов i18n.

Пример 1: три уровня

Аргументы теста
{"user": {"id": 7, "card": {"type": "debit", "cashback": "5%"}}}
Ожидается
{"user.id": 7, "user.card.type": "debit", "user.card.cashback": "5%"}

Пример 2: массив — значение

Аргументы теста
{"cats": ["АЗС", "Кафе"], "limit": {"month": 5000}}
Ожидается
{"cats": ["АЗС", "Кафе"], "limit.month": 5000}
Как проверяем Объявите flatten — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 7: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function flatten(obj) // → объект
рекурсияобъекты

Источник: на задачах Альфа-Банка: настройки карты и аналитика. Условие пересказано своими словами.

Давали на собеседовании? Ответов пока мало — ваш поможет.