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

83. Звёзды рейтинга Wildberries: свой метод строки repeatify

Лёгкая

В карточке товара Wildberries рейтинг 4 из 5 рисуют строкой '★'.repeatify(4) + '☆'.repeatify(1). Старый виджет ждёт именно метод строки, а repeat в нём заменить нельзя.

Напишите installRepeatify(proto): она добавляет в объект proto метод repeatify(count). Метод возвращает строку this, повторённую count раз. Дробный count округляется вниз, 0 даёт пустую строку, отрицательный или бесконечный count бросает RangeError.

Два требования из-за соседних скриптов: метод не должен появляться в for...in (неперечисляемый), а если у proto уже есть свой repeatify, его не трогаем. String.prototype.repeat не используйте.

В работе: Рейтинг в карточке товара: 120 карточек в выдаче, у каждой строка из пяти звёзд.

Пример 1: четыре звезды

Аргументы теста
"call", "★", 4
Ожидается
"★★★★"

Пример 2: метод не перечисляется

Аргументы теста
"enum", "", 0
Ожидается
["function", false, 0]
Как проверяем Объявите installRepeatify — тест вызывает её сам. Таймеры и Date в тестах ненастоящие: время идёт по команде теста, поэтому setTimeout на 5 секунд проверяется мгновенно. Тестов 9: 2 открыты выше, остальные приходят после старта подхода. Лимит — 2 с на тест.
function installRepeatify(proto) // добавляет proto.repeatify(count)
прототипыстрокиdefineProperty

Источник: Wildberries, задача «добавить repeatify в String.prototype», репозиторий кандидата. Условие пересказано своими словами.