Старое приложение ресторана присылает в Яндекс Еду позиции заказа вложенными группами: [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. Условие пересказано своими словами.
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.