Код Middle Expo и bare обновлено
Слияние конфигурации под платформу
Условие
Конфигурация приложения хранит общие настройки и переопределения для платформ: { "common": {...}, "ios": {...}, "android": {...} }. Напишите resolveConfig(config, platform): глубоко сливает common и раздел платформы (значения платформы важнее). Правила: объекты сливаются рекурсивно, массивы и примитивы из платформы заменяют общие целиком, значение null в разделе платформы удаляет ключ. Исходные объекты не менять. Если раздела платформы нет, вернуть копию common.
Примеры
resolveConfig({"common":{"name":"Shop","version":"1.0"},"ios":{"name":"Shop iOS"}}, "ios") // {"name":"Shop iOS","version":"1.0"}
resolveConfig({"common":{"name":"Shop"},"ios":{"name":"X"}}, "android") // {"name":"Shop"}
resolveConfig({"common":{"api":{"url":"a","timeout":10}},"android":{"api":{"timeout":20}}}, "android") // {"api":{"url":"a","timeout":20}}
Как подойти
Подсказки: 2
- Отдельная функция
merge(base, over)с рекурсией для пары объектов. - Для неизменности копируйте значения (
JSON.parse(JSON.stringify(...))подойдёт для JSON-данных).
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.