Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 18 additions & 23 deletions src/task_1/index.js
Original file line number Diff line number Diff line change
@@ -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;
36 changes: 14 additions & 22 deletions src/task_2/index.js
Original file line number Diff line number Diff line change
@@ -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;
29 changes: 5 additions & 24 deletions src/task_3/index.js
Original file line number Diff line number Diff line change
@@ -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<string>} Результаты поиска
*/
function find(phoneBook, query) {
}

module.exports.find = find;
"Простите меня, пожалуйста:("
"Неправильно рассчитал время и не успел доделать практики. "
"Ответственности с себя не снимаю, это моя и только моя вина:("
"Против правил идти не собираюсь и ни на какие поблажки не надеюсь, но был бы благодарен,"
"если вы проверите хотя бы 2 моих сделанных номера. Спасибо! Больше такого не повторится"