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

75. Сумма заказа Яндекс Еды из вложенного списка чисел и строк

Лёгкая

Старое приложение ресторана присылает в Яндекс Еду позиции заказа вложенными группами: [450, '2 шт.', ['390₽', ['соус', 60]]]. Строки пишут кассиры, поэтому в них что угодно.

Напишите sumOrder(list). Числа складываются как есть (кроме NaN и бесконечностей). Строка, которая начинается с цифры, даёт число из цифр в её начале: '390₽' → 390, '2 шт.' → 2. Строки с другим первым символом (' 12', '-5', 'x2') и значения других типов пропускаются.

flat и flatMap использовать нельзя. Одна выгрузка пришла с вложенностью 50 000 уровней, поэтому рекурсия не подходит: упрётся в стек.

В работе: Сверка суммы заказа из выгрузки кассы: 3 000 заказов в час, часть с кривыми строками.

Пример 1: пример из условия

Аргументы теста
[450, "2 шт.", ["390₽", ["соус", 60]]], 0
Ожидается
902

Пример 2: только цифры в начале

Аргументы теста
[1, "x", "2x", ["3", ["x2", "5"]]], 0
Ожидается
11
Как проверяем Объявите sumOrder — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 7: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function sumOrder(list) // → number
массивыстекстрокиприведение типов

Источник: Яндекс, задача на сумму чисел и строк с цифрами в начале, репозиторий кандидата, 2024. Условие пересказано своими словами.