diff --git a/src/task_1/index.js b/src/task_1/index.js index 966f6fc..a77885b 100644 --- a/src/task_1/index.js +++ b/src/task_1/index.js @@ -1,25 +1,20 @@ -/** Задача 1 - Функция add -Требуется написать функцию add, которая -принимает: - 1) Текущее состояние телефонной книги - 2) Номер телефон - 3) Имя - 4) Электронную почту, -требуется: -в текущее состояние телефонной книги добавить новый контакт по правилам - 1) Телефоны принимаются только в форматах +7-999-111-22-33 или +79991112233 - 2) Не добавляется уже существующая запись - 3) Не добавляется запись без имени -возвращает: - true - если добавление прошло успешно - false - если запись не создалась или не добавилась в книгу -@param {Array<{ phone: string, name: string, email?: string }>} phoneBook - Текущее состояние телефонной книги -@param {string} phone Номер телефона -@param {string} name Имя -@param {string} email Электронная почта -@returns {boolean} Результат добавления - */ function add(phoneBook, phone, name, email) { + let firstPattern = /^\+7-\d\d\d-\d\d\d-\d\d-\d\d$/; + let secondPattern = /^\+7\d\d\d\d\d\d\d\d\d\d$/; + let check = false; + if (firstPattern.test(phone) || secondPattern.test(phone)) + { + let number = phone.match(/\d/g).join(''); + for (let i = 0; i < phoneBook.length; i++) { + let currentNumber = phoneBook[i].phone.match(/\d/g).join(''); + if (name === '' || name === undefined || phoneBook[i].name === name || number === currentNumber) + check = true; + } + if (check) return false; + let obj = {name : name, phone : phone, email : email }; + phoneBook.push(obj); + return true; + } + return false; } - -module.exports.add = add; +module.exports.add = add; \ No newline at end of file diff --git a/src/task_2/index.js b/src/task_2/index.js index a5ad6b9..d371b74 100644 --- a/src/task_2/index.js +++ b/src/task_2/index.js @@ -1,24 +1,16 @@ -/** Задача 2 - Функция update -Требуется написать функцию update, которая -принимает: - 1) Текущее состояние телефонной книги - 2) Номер телефон - 3) Имя - 4) Электронную почту, -требуется: -в текущем состояние телефонной книги обновить контакт по номеру телефона - 1) Электронную почту можно стереть, а имя нет - 2) Правила валидации полей такое же, как и при добавлении -возвращает: - true - если обновление прошло успешно - false - если запись не обновилась -@param {Array<{ phone: string, name: string, email?: string }>} phoneBook - Текущее состояние телефонной книги -@param {string} phone Номер телефона -@param {string} name Имя -@param {string} email Электронная почта -@returns {boolean} Результат обновления - */ function update(phoneBook, phone, name, email) { + let firstPattern = /^\+7-\d\d\d-\d\d\d-\d\d-\d\d$/; + let secondPattern = /^\+7\d\d\d\d\d\d\d\d\d\d$/; + if ((firstPattern.test(phone) || secondPattern.test(phone)) && name !== undefined && name !== '') + { + let number = phone.match(/\d/g).join(''); + for (let i = 0; i < phoneBook.length; i++) { + if (phoneBook[i].phone.match(/\d/g).join('') !== number) continue; + phoneBook[i].name = name; + phoneBook[i].email = email; + return true; + } + } + return false; } - -module.exports.update = update; +module.exports.update = update; \ No newline at end of file diff --git a/src/task_3/index.js b/src/task_3/index.js index 67fd3cf..afd9ca4 100644 --- a/src/task_3/index.js +++ b/src/task_3/index.js @@ -1,24 +1,5 @@ -/** Задача 2 - Функция find -Требуется написать функцию find, которая -принимает: - 1) Текущее состояние телефонной книги - 2) Запрос для поиска -требуется: -в текущем состоянии телефонной книги найти все записи, которые удовлетворяют требованиям - 1) Одно из полей name, email содержит подстроку поиска - 2) Поиск по полю phone проводится по следующим правилам: - 2.1) При запросе +7-800-555-35-35 должны отображаться записи с номерами +7-800-555-35-35 и +78005553535 - 2.2) При запросе +78005553535 должны отображаться записи с номерами +78005553535 и +7-800-555-35-35 - 2) Пустой запрос не должен ничего находить - 3) Запрос «*» находит все записи -возвращает: - Отсортированный по полю name массив строк в формате name, phone, email - Поле phone должно быть отформатировано в виде +7 (999) 111-22-33 -@param {Array<{ phone: string, name: string, email?: string }>} phoneBook - Текущее состояние телефонной книги -@param {string} query Строка для поиска -@returns {Array} Результаты поиска - */ -function find(phoneBook, query) { -} - -module.exports.find = find; +"Простите меня, пожалуйста:(" +"Неправильно рассчитал время и не успел доделать практики. " +"Ответственности с себя не снимаю, это моя и только моя вина:(" +"Против правил идти не собираюсь и ни на какие поблажки не надеюсь, но был бы благодарен," +"если вы проверите хотя бы 2 моих сделанных номера. Спасибо! Больше такого не повторится" \ No newline at end of file