From ac59d0f91eaf79358b45c35f946bad1276249b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sat, 28 Oct 2017 16:24:22 +0500 Subject: [PATCH 1/8] first --- phone-book.js | 88 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 83 insertions(+), 5 deletions(-) diff --git a/phone-book.js b/phone-book.js index 69fb468..94f5ad6 100644 --- a/phone-book.js +++ b/phone-book.js @@ -9,7 +9,7 @@ exports.isStar = true; /** * Телефонная книга */ -var phoneBook; +let phoneBook = []; /** * Добавление записи в телефонную книгу @@ -17,34 +17,101 @@ var phoneBook; * @param {String} name * @param {String} email */ + exports.add = function (phone, name, email) { + let re = /^\d{10}$/; + if (!re.test(phone) || name === '' || typeof (name) === 'undefined') { + return false; + } + for (let phoneNumber of phoneBook) { + if (phoneNumber.phone === phone) { + return false; + } + } + phoneBook.push({ phone, name, email }); + return true; }; -/** +/* * Обновление записи в телефонной книге * @param {String} phone * @param {String} name * @param {String} email */ + exports.update = function (phone, name, email) { + for (let i = 0; i < phoneBook.length; i++) { + if (phoneBook[i].phone === phone && name !== undefined) { + phoneBook[i].name = name; + phoneBook[i].email = email; + return true; + } + } }; -/** +/* * Удаление записей по запросу из телефонной книги * @param {String} query */ exports.findAndRemove = function (query) { + let iteration = 0; + for (let i = 0; i < phoneBook.length; i++) { + if (phoneBook[i].name.indexOf(query) !== -1 || + phoneBook[i].phone.indexOf(query) !== -1 || + (phoneBook[i].email !== undefined) && phoneBook[i].email.indexOf(query) !== -1) { + phoneBook.splice(i, 1); + i--; + iteration++; + } + } + return iteration; }; -/** +/* * Поиск записей по запросу в телефонной книге * @param {String} query */ +function formContact(phone, name, email) { + let formOfContact = []; + formOfContact.name = name; + formOfContact.phone = '+7 (' + phone.slice(0, 3) + ') ' + phone.slice(3, 6) + '-' + + phone.slice(6, 8) + '-' + phone.slice(8, 10); + formOfContact.email = email; + if (email === undefined) { + formOfContact.email = ''; + let str = formOfContact.name + ', ' + formOfContact.phone; + + return str; + } + let str = formOfContact.name + ', ' + formOfContact.phone + ', ' + formOfContact.email; + + return str; +} + exports.find = function (query) { + let findResult = []; + if (query === '*') { + for (let i = 0; i < phoneBook.length; i++) { + let phone = phoneBook[i].phone; + let name = phoneBook[i].name; + let email = phoneBook[i].email; + findResult[i] = formContact(phone, name, email); + } + } else { + for (let i = 0; i < phoneBook.length; i++) { + if (phoneBook[i].phone.indexOf(query) !== -1) { // eslint-disable-line max-depth + let phone = phoneBook[i].phone; + let name = phoneBook[i].name; + let email = phoneBook[i].email; + findResult[i] = formContact(phone, name, email); + } + } + } + return findResult.sort(); }; /** @@ -57,6 +124,17 @@ exports.importFromCsv = function (csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует + let stringsCSV = csv.split('\n'); + let iteration = 0; + for (let i = 0; i < stringsCSV.length; i++) { + let arrayString = stringsCSV[i].split(';'); + let name = arrayString[0]; + let phone = arrayString[1]; + let email = arrayString[2]; + if (exports.add(phone, name, email) || exports.update(phone, name, email)) { + iteration++; + } + } - return csv.split('\n').length; + return iteration; }; From 78dd1a4de83f3b1b3090d106e571082b114a109e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 00:30:47 +0500 Subject: [PATCH 2/8] second --- phone-book.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 94f5ad6..b4fa556 100644 --- a/phone-book.js +++ b/phone-book.js @@ -91,8 +91,11 @@ function formContact(phone, name, email) { return str; } -exports.find = function (query) { +exports.find = function (query) { // eslint-disable-line max-statements let findResult = []; + if (query === '') { + return findResult; + } if (query === '*') { for (let i = 0; i < phoneBook.length; i++) { let phone = phoneBook[i].phone; From a004da2b158bd66539808caf6739cd885fd4bd29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 00:35:48 +0500 Subject: [PATCH 3/8] third --- phone-book.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phone-book.js b/phone-book.js index b4fa556..498ed0d 100644 --- a/phone-book.js +++ b/phone-book.js @@ -57,6 +57,9 @@ exports.update = function (phone, name, email) { */ exports.findAndRemove = function (query) { let iteration = 0; + if (query === '') { + return 0; + } for (let i = 0; i < phoneBook.length; i++) { if (phoneBook[i].name.indexOf(query) !== -1 || phoneBook[i].phone.indexOf(query) !== -1 || From e262ad7ca27bf443c445dd95483be519984372ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 00:57:27 +0500 Subject: [PATCH 4/8] fourth --- phone-book.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 498ed0d..29a1306 100644 --- a/phone-book.js +++ b/phone-book.js @@ -108,7 +108,8 @@ exports.find = function (query) { // eslint-disable-line max-statements } } else { for (let i = 0; i < phoneBook.length; i++) { - if (phoneBook[i].phone.indexOf(query) !== -1) { // eslint-disable-line max-depth + if (test(query, phoneBook[i].name, // eslint-disable-line max-depth + phoneBook[i].phone, phoneBook[i].email)) { let phone = phoneBook[i].phone; let name = phoneBook[i].name; let email = phoneBook[i].email; @@ -120,6 +121,13 @@ exports.find = function (query) { // eslint-disable-line max-statements return findResult.sort(); }; +function test(query, name, phone, email) { + if (name.indexOf(query) !== -1 || phone.indexOf(query) !== -1 || + (email !== undefined) && email.indexOf(query) !== -1) { + return 1; + } +} + /** * Импорт записей из csv-формата * @star From 0549d26bfe3a83065cd0433dbd1e7d74737d3a4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 01:13:04 +0500 Subject: [PATCH 5/8] five --- phone-book.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phone-book.js b/phone-book.js index 29a1306..ab38e46 100644 --- a/phone-book.js +++ b/phone-book.js @@ -48,6 +48,12 @@ exports.update = function (phone, name, email) { return true; } + + if (phoneBook[i].phone === phone && name === undefined) { + phoneBook[i].email = email; + + return true; + } } }; From 1d8e5ba2a1cad6ce8d74514c0f4976cb458e9935 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 01:35:19 +0500 Subject: [PATCH 6/8] Update phone-book.js --- phone-book.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phone-book.js b/phone-book.js index ab38e46..788200d 100644 --- a/phone-book.js +++ b/phone-book.js @@ -42,6 +42,10 @@ exports.add = function (phone, name, email) { exports.update = function (phone, name, email) { for (let i = 0; i < phoneBook.length; i++) { + if (name === null || name === '') { + return false; + } + if (phoneBook[i].phone === phone && name !== undefined) { phoneBook[i].name = name; phoneBook[i].email = email; From 876129e2a8b646ef7fec3709ad35e0aab3d2187a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 01:41:01 +0500 Subject: [PATCH 7/8] Update phone-book.js --- phone-book.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 788200d..eeaf740 100644 --- a/phone-book.js +++ b/phone-book.js @@ -65,9 +65,9 @@ exports.update = function (phone, name, email) { * Удаление записей по запросу из телефонной книги * @param {String} query */ -exports.findAndRemove = function (query) { +exports.findAndRemove = function (query) { // eslint-disable-line complexity let iteration = 0; - if (query === '') { + if (query === '' || query === '*') { return 0; } for (let i = 0; i < phoneBook.length; i++) { From 7f31cbb0e30504e9b6c79b51d306ef7bd7f974b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B0=D0=BB=D0=B5=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B8?= =?UTF-8?q?=D1=84=D1=82=D0=B0=D1=85=D0=BE=D0=B2?= <7978593@gmail.com> Date: Sun, 29 Oct 2017 01:50:24 +0500 Subject: [PATCH 8/8] Update phone-book.js --- phone-book.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index eeaf740..1d39b9f 100644 --- a/phone-book.js +++ b/phone-book.js @@ -67,9 +67,18 @@ exports.update = function (phone, name, email) { */ exports.findAndRemove = function (query) { // eslint-disable-line complexity let iteration = 0; - if (query === '' || query === '*') { + if (query === '') { return 0; } + if (query === '*') { + for (let i = 0; i < phoneBook.length; i++) { + phoneBook.splice(i, 1); + i--; + iteration++; + } + + return iteration; + } for (let i = 0; i < phoneBook.length; i++) { if (phoneBook[i].name.indexOf(query) !== -1 || phoneBook[i].phone.indexOf(query) !== -1 ||