Напиши сам
Стартер, видимые тесты и тот же прогон, что у карточек «что выведет».
Здесь просят не предсказать вывод, а написать функцию. Правила игры отличаются от первых пяти уровней.
- Тесты — часть условия. В них видны имя функции, набор аргументов, краевые случаи и момент, когда тест проверяет результат. Тесты не меняются.
- Стартер можно переписать целиком. Это заготовка, а не ограничение.
- Проверка идёт на поведение. Эталон рядом — один рабочий вариант, а не единственный допустимый синтаксис.
Что ломается чаще всего
- Состояние в глобальной переменной. Два вызова подряд должны быть независимы, если по смыслу это фабрика. Прячьте состояние в замыкание.
- Асинхронная функция без промиса. Если по задаче нужно подождать, верните промис — тест его дождётся. Иначе проверка успеет пройти до результата.
- Потерянный `this`. Колбэк таймера вызывается не как метод, поэтому
thisи часть аргументов придётся сохранить заранее или пробросить черезapply. - Забытый краевой случай. Пустой массив,
nullна входе, отменённый таймер — обычно именно это отличает рабочий вариант от правильного.
- 6.1debounce
- 6.2throttle
- 6.3memoize
- 6.4sleep
- 6.5promiseAll
- 6.6curry
- 6.7compose
- 6.8pipe
- 6.9map
- 6.10filter
- 6.11reduce
- 6.12myCall
- 6.13myApply
- 6.14myBind
- 6.15promiseAllSettled
- 6.16promiseRace
- 6.17flat
- 6.18get
- 6.19groupBy
- 6.20deepClone
- 6.21deepEqual
- 6.22EventEmitter
- 6.23retry
- 6.24pool
- 6.25uniq
- 6.26chunk
- 6.27flattenDeep
- 6.28zip
- 6.29partition
- 6.30compact
- 6.31pick
- 6.32omit
- 6.33isEmpty
- 6.34mergeDeep
- 6.35promiseAny
- 6.36withTimeout
- 6.37promiseAllLimit
- 6.38mapLimit
- 6.39sequence
- 6.40delayChain
- 6.41retryWithDelay
- 6.42myFinally
- 6.43camelCase
- 6.44truncate
- 6.45template
- 6.46partial
- 6.47negate
- 6.48composeAsync
- 6.49once
- 6.50waitFor
Задачи из сборки