Ответ API карточки Яндекс Маркета вложен на 5–6 уровней, и половины полей может не быть: у товара нет отзывов — нет и reviews. Напишите get(obj, path, defaultValue).
Путь — ключи через точку и индексы в квадратных скобках: offers[0].seller.rating, matrix[1][0]. Если на любом шаге значения нет (undefined или null посреди пути), вернуть defaultValue. Если значение найдено и равно 0, '' или false — вернуть его.
В работе: Разбор ответов API, шаблоны, настройки с вложенными полями.
Пример 1: вложенные ключи
Аргументы теста
{"offer": {"seller": {"rating": 4.8}}}, "offer.seller.rating", nullОжидается
4.8
Пример 2: индекс массива
Аргументы теста
{"items": [{"price": 1290}, {"price": 499}]}, "items[1].price", nullОжидается
499
Как проверяем
Объявите
get — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 7: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function get(obj, path, defaultValue) // → значение
Источник: на задачах Яндекс Маркета: карточка товара. Условие пересказано своими словами.
Давали на собеседовании?
Ответов пока мало — ваш поможет.
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.