diff --git a/src/task_1/index.js b/src/task_1/index.js index 966f6fc..f0a862e 100644 --- a/src/task_1/index.js +++ b/src/task_1/index.js @@ -19,7 +19,30 @@ @param {string} email Электронная почта @returns {boolean} Результат добавления */ -function add(phoneBook, phone, name, email) { +function add(phoneBook, phone, name, email){ + const correctContact2 = correctContact(phone); + if (!name || correctContact2 === null){ + return false; + } + + for (let item of phoneBook){ + if (item.phone === correctContact2 && item !== undefined){ + return false; + } + } + phoneBook.push({ phone: correctContact2, name, email }); + return true; +} +function correctContact(phone){ + if (phone.match(/\+\d{11}/) !== null){ + return phone; + } + else if (phone.match(/\+\d-\d{3}-\d{3}-\d{2}-\d{2}/) !== null){ + return phone.replace(/-/g, ''); + } + else{ + return null; + } } module.exports.add = add; diff --git a/src/task_2/index.js b/src/task_2/index.js index a5ad6b9..be5bd68 100644 --- a/src/task_2/index.js +++ b/src/task_2/index.js @@ -19,6 +19,19 @@ @returns {boolean} Результат обновления */ function update(phoneBook, phone, name, email) { + for (let phones of phoneBook){ + if (phones.phone.replace(/-/g, "") == phone.replace(/-/g, "")){ + phones.name = name; + if (email instanceof String) + phones.email = email; + + return true; + } + } + if (phone.search(/^\+\d-\d{3}-\d{3}-\d{2}-\d{2}$|^\+\d{11}$/) == -1 + || !name) return false; + + return false; } module.exports.update = update; diff --git a/src/task_3/index.js b/src/task_3/index.js index 67fd3cf..6dd6273 100644 --- a/src/task_3/index.js +++ b/src/task_3/index.js @@ -18,7 +18,38 @@ @param {string} query Строка для поиска @returns {Array} Результаты поиска */ -function find(phoneBook, query) { +function find(phoneBook, query) +{ + let massiv = []; + if (query === '*') + { + phoneBook.forEach(element => {massiv.push(correct(element.phone, element.name, element.email));}); + return massiv; + } + phoneBook.forEach(element => { + if (element !== undefined) + { + if (element.email.includes(query) && element.email !== undefined) + { + massiv.push(correct(element.phone, element.name, element.email)); + } + if (element.phone.includes(query.replace(/-/g, '')) || element.name.includes(query)) + { + massiv.push(correct(element.phone, element.name, element.email)); + } + } + }); + return massiv; +} + +function correct(phone, name, email) +{ + const formattedPhone = `${phone.slice(0, 2)} (${phone.slice(2, 5)}) ${phone.slice(5, 8)}-${phone.slice(8, 10)}-${phone.slice(10, 12)}`; + if (email === undefined) + { + return `${name} ${formattedPhone}`; + } + return `${name} ${formattedPhone} ${email}`; } module.exports.find = find; diff --git a/src/task_4/index.js b/src/task_4/index.js index c769ecd..7d5d663 100644 --- a/src/task_4/index.js +++ b/src/task_4/index.js @@ -13,6 +13,28 @@ @returns {number} Количество удаленных записей */ function findAndRemove(phoneBook, query) { + let deletedPhones = 0; + if (query === '*') { + for (let i in phoneBook) { + delete phoneBook[i]; + deletedPhones++; + } + return deletedPhones; + } + for (let i in phoneBook) { + if (phoneBook[i] !== undefined) { + if (phoneBook[i].email !== undefined && phoneBook[i].email.includes(query)) { + delete phoneBook[i]; + deletedPhones++; + } + if (phoneBook[i].name.includes(query) || phoneBook[i].phone.includes(query.replace(/-/g, ''))) { + delete phoneBook[i]; + deletedPhones++; + continue; + } + } + } + return deletedPhones; } module.exports.findAndRemove = findAndRemove;