/itmo-js-hw02-phonebook

JavaScript homework #2 at ITMO University

Primary LanguageJavaScript

Задача «Телефонная книга»

Мы очень хотим, чтобы код вы написали сами, а не пользовались внешними библиотеками.

Основное задание

Вам предлагается написать записную книжку на 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 Форматирование кода