Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.
Вам предлагается написать записную книжку на JavaScript. Для этого нужно выбрать подходящую структуру данных для хранения контактов, а также реализовать функции для выполнения операций с ней.
Функция add
для добавления контактов:
- На вход принимает телефон, имя и электронную почту
- Возвращает true или false в зависимости от успеха опереации
- Телефоны принимаются только в формате 5556667788 (без кода)
- Не добавляет контакт с одним и тем же номером повторно
- Не добавляет контакт без имени
Функция update
для обновления контактов:
- На вход принимает телефон, имя и электронную почту
- Обновляет имя и электронную почту по заданному телефону
- Возвращает true или false в зависимости от успеха опереации
- Электронную почту можно стереть (не передав последний параметр), а имя нет
Функция find
для поиска контактов:
- На вход принимает запрос в виде строки
- Ищет вхождение этой строки хотя бы в одно из полей контакта
- Возвращает отсортированный по имени массив строк в формате
name, phone, email
- Имя и электронную почту выводит как есть, а телефон в формате
+7 (555) 666-77-88
- Пустой запрос не должен ничего находить (отдавать пустой массив)
- Запрос «*» находит все контакты
Функция findAndRemove
для удаления контактов:
- На вход принимает запрос в виде строки
- Находит (смотри
find
) и удаляет все найденные контакты - Возвращает число удалённых контактов
В файле src/index.js вы можете найти примеры использования записной книжки.
По одному добавлять контакты в книгу не очень удобно, поэтому будет здорово, если вы добавите
возможность их импорта из DSV в котором
разделителем выступает символ ;
. Для этого напишите реализацию функции importFromDsv
и установите
флажку isExtraTaskSolved
значение true
.
На вход функция принимает содержимое многострочного текстового файла в формате DSV. Вам нужно разбить содержимое на записи (строки), извлечь из них контакты и обработать их. Если одна из записей оказалась некорректной, то она должна быть проигнорирована. Если контакт в телефонной книге уже есть, то его нужно обновить или дополнить данными из записи. На выходе функция возвращает число добавленных и обновлённых контактов.
Пример работы функции вы может отыскать в src/index.js и в открытых тестах.
Запускаются так: npm run <command>
Команда | Действие |
---|---|
start | Запуск src/index.js |
test | Запуск всех тестов |
test:watch | Запуск тестов при изменении кода |
test:coverage | Проверка уровня покрытия кода тестами |
lint | Проверка кода линтером |
lint-fix | Исправление ошибок, выявленных линтером |
format | Форматирование кода |