From 39fd66027b2de9828999c5e09f1007bd16c93b4c Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 05:50:21 +0500 Subject: [PATCH 01/25] =?UTF-8?q?=D1=84=D1=83=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 147 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 147 insertions(+) diff --git a/phone-book.js b/phone-book.js index 69fb468..8692f17 100644 --- a/phone-book.js +++ b/phone-book.js @@ -1,3 +1,5 @@ +/* jshint maxcomplexity:false */ + 'use strict'; /** @@ -16,37 +18,174 @@ var phoneBook; * @param {String} phone * @param {String} name * @param {String} email + * @returns {Boolean} */ exports.add = function (phone, name, email) { + if (this.phoneBook === undefined) { + this.phoneBook = {}; + this.phoneBook[phone] = [phone, name, email]; + } + let flag = checkArguments(phone, name); + if (flag) { + if (!reapitEntry(this.phoneBook, phone, email)) { + + return false; + } + this.phoneBook[phone] = [phone, name, email]; + } + return flag; }; +function reapitEntry(book, phone, email) { + for (var elem in book) { + if (phone === book[elem][0] || email === book[elem][2]) { + + return false; + } + } + + return true; +} + +function checkArguments(phone, name) { + if (phone.length !== 10) { + + return false; + } + if (name === 'Неизвестный') { + return false; + } + + return true; +} + /** * Обновление записи в телефонной книге * @param {String} phone * @param {String} name * @param {String} email + * @returns {Boolean} */ exports.update = function (phone, name, email) { + if (name === 'Неизвестный' || name === undefined) { + + return false; + } + for (var elem in this.phoneBook) { + if (phone === this.phoneBook[elem][0]) { + this.phoneBook[elem][1] = name; + this.phoneBook[elem][2] = email; + + return true; + } + } + + return false; }; /** * Удаление записей по запросу из телефонной книги * @param {String} query + * @returns {Number} */ exports.findAndRemove = function (query) { + let result = exports.find(query); + let newPhone = ''; + for (var i = 0; i < result.length; i++) { + let index = result[i].indexOf('+'); + newPhone = transfomPhone(result[i].slice(index, index + 19)); + delete this.phoneBook[newPhone]; + } + return result.length; }; +function transfomPhone(phone) { + if (phoneBook !== undefined) { + phone.slice(4, 7); + } + let nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); + + return nums; +} + /** * Поиск записей по запросу в телефонной книге * @param {String} query + * @returns {[String]} */ exports.find = function (query) { + if (query === '') { + return ''; + } + let result = []; + result = (query === '*') ? pushTwo(this.phoneBook) : pushTree(this.phoneBook, query); + return result.sort(); }; +function pushTwo(book) { + let result = []; + for (var elem in book) { + if (book.hasOwnProperty(elem)) { + result.push(createLine(book, elem)); + } + } + + return result; +} + +function pushTree(book, query) { + let result = []; + for (var number in book) { + if (book.hasOwnProperty(number)) { + result.push(createComplexLine(book, number, query)); + } + } + + return result; +} + +function createLine(book, number) { + return (book[number][2] !== undefined) ? book[number][1] + ' ' + + translatePhone(number) + ' ' + book[number][2] : book[number][1] + ' ' + + translatePhone(number); +} + +function createComplexLine(book, number, query) { + return (book[number][2] === undefined) ? withoutEmail(book, + number, query) : withEmail(book, number, query); +} + +function withoutEmail(book, number, query) { + let result = ''; + if (book[number][0].indexOf(query) !== -1 || + book[number][1].indexOf(query) !== -1) { + result = book[number][1] + ' ' + translatePhone(number); + } + + return result; +} + +function withEmail(book, number, query) { + let result = ''; + if (book[number][0].indexOf(query) !== -1 || + book[number][1].indexOf(query) !== -1 || + book[number][2].indexOf(query) !== -1) { + result = book[number][1] + ' ' + translatePhone(number) + + ' ' + book[number][2]; + } + + return result; +} + +function translatePhone(number) { + return '+7 (' + number.slice(0, 3) + ') ' + number.slice(3, 6) + + '-' + number.slice(6, 8) + '-' + number.slice(8, 10); +} + /** * Импорт записей из csv-формата * @star @@ -57,6 +196,14 @@ exports.importFromCsv = function (csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует + let persons = csv.split('\n'); + let parts = []; + for (var i = 0; i < persons.length; i++) { + parts = persons[i].split(';'); + if (exports.add(parts[1], parts[0], parts[2]) === false) { + exports.update(parts[1], parts[0], parts[2]); + } + } return csv.split('\n').length; }; From c04d1ce7f9097cebc3e94885ed2b767648a1e3d2 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 13:50:00 +0500 Subject: [PATCH 02/25] =?UTF-8?q?=D0=A3=D1=81=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D1=88=D0=B5=D0=BD=D1=81=D1=82=D0=B2=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BA=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 59 ++++++++++++++++----------------------------------- 1 file changed, 18 insertions(+), 41 deletions(-) diff --git a/phone-book.js b/phone-book.js index 8692f17..2267e50 100644 --- a/phone-book.js +++ b/phone-book.js @@ -24,6 +24,8 @@ exports.add = function (phone, name, email) { if (this.phoneBook === undefined) { this.phoneBook = {}; this.phoneBook[phone] = [phone, name, email]; + + return true; } let flag = checkArguments(phone, name); if (flag) { @@ -118,30 +120,19 @@ function transfomPhone(phone) { */ exports.find = function (query) { if (query === '') { - return ''; + return []; } let result = []; - result = (query === '*') ? pushTwo(this.phoneBook) : pushTree(this.phoneBook, query); + result = (query === '*') ? allPersons(this.phoneBook) : allMath(this.phoneBook, query); return result.sort(); }; -function pushTwo(book) { - let result = []; - for (var elem in book) { - if (book.hasOwnProperty(elem)) { - result.push(createLine(book, elem)); - } - } - - return result; -} - -function pushTree(book, query) { +function allPersons(book) { let result = []; for (var number in book) { if (book.hasOwnProperty(number)) { - result.push(createComplexLine(book, number, query)); + result.push(createLine(book, number)); } } @@ -149,33 +140,19 @@ function pushTree(book, query) { } function createLine(book, number) { - return (book[number][2] !== undefined) ? book[number][1] + ' ' + - translatePhone(number) + ' ' + book[number][2] : book[number][1] + ' ' + - translatePhone(number); + return (book[number][2] === undefined) ? book[number][1] + + ', ' + translatePhone(number) : book[number][1] + ', ' + translatePhone(number) + + ', ' + book[number][2]; } -function createComplexLine(book, number, query) { - return (book[number][2] === undefined) ? withoutEmail(book, - number, query) : withEmail(book, number, query); -} - -function withoutEmail(book, number, query) { - let result = ''; - if (book[number][0].indexOf(query) !== -1 || - book[number][1].indexOf(query) !== -1) { - result = book[number][1] + ' ' + translatePhone(number); - } - - return result; -} - -function withEmail(book, number, query) { - let result = ''; - if (book[number][0].indexOf(query) !== -1 || - book[number][1].indexOf(query) !== -1 || - book[number][2].indexOf(query) !== -1) { - result = book[number][1] + ' ' + translatePhone(number) + - ' ' + book[number][2]; +function allMath(book, query) { + let result = []; + for (var number in book) { + if (book[number][0].indexOf(query) !== -1 || + book[number][1].indexOf(query) !== -1 || + (book[number][2] !== undefined && book[number][2].indexOf(query) !== -1)) { + result.push(createLine(book, number)); + } } return result; @@ -205,5 +182,5 @@ exports.importFromCsv = function (csv) { } } - return csv.split('\n').length; + return Object.keys(this.phoneBook).length; }; From fb072c69c2c462ebd403f01a77d07a51942a9a8b Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:02:00 +0500 Subject: [PATCH 03/25] ... --- phone-book.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 2267e50..356092e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -177,9 +177,8 @@ exports.importFromCsv = function (csv) { let parts = []; for (var i = 0; i < persons.length; i++) { parts = persons[i].split(';'); - if (exports.add(parts[1], parts[0], parts[2]) === false) { - exports.update(parts[1], parts[0], parts[2]); - } + exports.add(parts[1], parts[0], parts[2]); + exports.update(parts[1], parts[0], parts[2]); } return Object.keys(this.phoneBook).length; From 984757caa1b475e5929569678b57c97c558b53d1 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:06:57 +0500 Subject: [PATCH 04/25] Update phone-book.js --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 356092e..49dc8d7 100644 --- a/phone-book.js +++ b/phone-book.js @@ -55,7 +55,7 @@ function checkArguments(phone, name) { return false; } - if (name === 'Неизвестный') { + if (name === 'Неизвестный' || name === undefined) { return false; } From 3e694f2403d2d2e62443742be23eb5e737602f8b Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:09:10 +0500 Subject: [PATCH 05/25] Update phone-book.js --- phone-book.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phone-book.js b/phone-book.js index 49dc8d7..b4034bf 100644 --- a/phone-book.js +++ b/phone-book.js @@ -51,6 +51,9 @@ function reapitEntry(book, phone, email) { } function checkArguments(phone, name) { + if (phone === undefined) { + return false; + } if (phone.length !== 10) { return false; From dc913a152502a0eb4be8068a74293b81736b21e2 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:12:20 +0500 Subject: [PATCH 06/25] Update phone-book.js --- phone-book.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phone-book.js b/phone-book.js index b4034bf..af9cfd0 100644 --- a/phone-book.js +++ b/phone-book.js @@ -58,6 +58,9 @@ function checkArguments(phone, name) { return false; } + if (isNaN(Number(phone))) { + return false; + } if (name === 'Неизвестный' || name === undefined) { return false; } From 59719074a9e2d924713abde66b39e2b417989e70 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:15:14 +0500 Subject: [PATCH 07/25] Update phone-book.js --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index af9cfd0..f94787e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -6,7 +6,7 @@ * Сделано задание на звездочку * Реализован метод importFromCsv */ -exports.isStar = true; +exports.isStar = false; /** * Телефонная книга From 249b42d25e0a12136d9774d5b12e1061636dce7a Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:19:11 +0500 Subject: [PATCH 08/25] Update phone-book.js --- phone-book.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/phone-book.js b/phone-book.js index f94787e..1d09b9c 100644 --- a/phone-book.js +++ b/phone-book.js @@ -6,7 +6,7 @@ * Сделано задание на звездочку * Реализован метод importFromCsv */ -exports.isStar = false; +exports.isStar = true; /** * Телефонная книга @@ -125,9 +125,6 @@ function transfomPhone(phone) { * @returns {[String]} */ exports.find = function (query) { - if (query === '') { - return []; - } let result = []; result = (query === '*') ? allPersons(this.phoneBook) : allMath(this.phoneBook, query); From 135fc2cb08479b4329c7b4b15cf5098f69be3c42 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:23:58 +0500 Subject: [PATCH 09/25] Update phone-book.js --- phone-book.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phone-book.js b/phone-book.js index 1d09b9c..af9cfd0 100644 --- a/phone-book.js +++ b/phone-book.js @@ -125,6 +125,9 @@ function transfomPhone(phone) { * @returns {[String]} */ exports.find = function (query) { + if (query === '') { + return []; + } let result = []; result = (query === '*') ? allPersons(this.phoneBook) : allMath(this.phoneBook, query); From d68b426b70d58197bb2afc85d38fec0e89db1591 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:30:52 +0500 Subject: [PATCH 10/25] Update phone-book.js --- phone-book.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index af9cfd0..979567f 100644 --- a/phone-book.js +++ b/phone-book.js @@ -29,7 +29,7 @@ exports.add = function (phone, name, email) { } let flag = checkArguments(phone, name); if (flag) { - if (!reapitEntry(this.phoneBook, phone, email)) { + if (!reapitEntry(this.phoneBook, phone)) { return false; } @@ -39,9 +39,9 @@ exports.add = function (phone, name, email) { return flag; }; -function reapitEntry(book, phone, email) { +function reapitEntry(book, phone) { for (var elem in book) { - if (phone === book[elem][0] || email === book[elem][2]) { + if (phone === book[elem][0]) { return false; } From b840253b95ce57617783676b81aeafdafe141d52 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 14:58:46 +0500 Subject: [PATCH 11/25] Update phone-book.js --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 979567f..63d11eb 100644 --- a/phone-book.js +++ b/phone-book.js @@ -102,7 +102,7 @@ exports.findAndRemove = function (query) { let result = exports.find(query); let newPhone = ''; for (var i = 0; i < result.length; i++) { - let index = result[i].indexOf('+'); + let index = result[i].indexOf('+7'); newPhone = transfomPhone(result[i].slice(index, index + 19)); delete this.phoneBook[newPhone]; } From 3bd4b9af789edc1e587af99e0f19bba56a20b8ab Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:01:12 +0500 Subject: [PATCH 12/25] Update phone-book.js --- phone-book.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 63d11eb..7bd6279 100644 --- a/phone-book.js +++ b/phone-book.js @@ -125,9 +125,6 @@ function transfomPhone(phone) { * @returns {[String]} */ exports.find = function (query) { - if (query === '') { - return []; - } let result = []; result = (query === '*') ? allPersons(this.phoneBook) : allMath(this.phoneBook, query); From cef2a5558d559e3717a68016b6a39fd0a0bf8975 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:20:40 +0500 Subject: [PATCH 13/25] =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BD=D1=83=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BF=D1=83=D1=81=D1=82=D0=BE=D0=B9=20=D0=B2=D1=8B?= =?UTF-8?q?=D0=B2=D0=BE=D0=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/phone-book.js b/phone-book.js index 7bd6279..63d11eb 100644 --- a/phone-book.js +++ b/phone-book.js @@ -125,6 +125,9 @@ function transfomPhone(phone) { * @returns {[String]} */ exports.find = function (query) { + if (query === '') { + return []; + } let result = []; result = (query === '*') ? allPersons(this.phoneBook) : allMath(this.phoneBook, query); From bc741cf6105a0b53000a21b816ecfc1ba76fadc3 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:34:33 +0500 Subject: [PATCH 14/25] Update phone-book.js --- phone-book.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/phone-book.js b/phone-book.js index 63d11eb..b64d052 100644 --- a/phone-book.js +++ b/phone-book.js @@ -80,16 +80,10 @@ exports.update = function (phone, name, email) { return false; } - for (var elem in this.phoneBook) { - if (phone === this.phoneBook[elem][0]) { - this.phoneBook[elem][1] = name; - this.phoneBook[elem][2] = email; + this.phoneBook[phone][1] = name; + this.phoneBook[phone][2] = email; - return true; - } - } - - return false; + return true; }; From 7e1f043961f46789c3bbed79c4afe0b2eee7ade2 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:41:02 +0500 Subject: [PATCH 15/25] Update phone-book.js --- phone-book.js | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/phone-book.js b/phone-book.js index b64d052..53ed431 100644 --- a/phone-book.js +++ b/phone-book.js @@ -80,10 +80,16 @@ exports.update = function (phone, name, email) { return false; } - this.phoneBook[phone][1] = name; - this.phoneBook[phone][2] = email; + for (var elem in this.phoneBook) { + if (phone === this.phoneBook[elem][0]) { + this.phoneBook[elem][1] = name; + this.phoneBook[elem][2] = email; - return true; + return true; + } + } + + return false; }; @@ -95,8 +101,9 @@ exports.update = function (phone, name, email) { exports.findAndRemove = function (query) { let result = exports.find(query); let newPhone = ''; + let index = 0; for (var i = 0; i < result.length; i++) { - let index = result[i].indexOf('+7'); + index = result[i].indexOf('+7'); newPhone = transfomPhone(result[i].slice(index, index + 19)); delete this.phoneBook[newPhone]; } @@ -105,10 +112,13 @@ exports.findAndRemove = function (query) { }; function transfomPhone(phone) { + let nums = undefined; if (phoneBook !== undefined) { phone.slice(4, 7); } - let nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); + if (phone !== undefined) { + nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); + } return nums; } From 8e042dfae9a968528d9a768f1c9a694cf3d6410d Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:42:50 +0500 Subject: [PATCH 16/25] Update phone-book.js --- phone-book.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 53ed431..e72c688 100644 --- a/phone-book.js +++ b/phone-book.js @@ -112,12 +112,11 @@ exports.findAndRemove = function (query) { }; function transfomPhone(phone) { - let nums = undefined; if (phoneBook !== undefined) { phone.slice(4, 7); } if (phone !== undefined) { - nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); + let nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); } return nums; From 955b24f09b976091d1e0503e8a41ac83539842a3 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 15:45:38 +0500 Subject: [PATCH 17/25] Update phone-book.js --- phone-book.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index e72c688..85e7275 100644 --- a/phone-book.js +++ b/phone-book.js @@ -115,9 +115,7 @@ function transfomPhone(phone) { if (phoneBook !== undefined) { phone.slice(4, 7); } - if (phone !== undefined) { let nums = phone.slice(4, 7) + phone.slice(9, 12) + phone.slice(13, 15) + phone.slice(16, 19); - } return nums; } From 99b27e8c42f91d44801c158b6178af81114db548 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:14:48 +0500 Subject: [PATCH 18/25] Update phone-book.js --- phone-book.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 85e7275..96de002 100644 --- a/phone-book.js +++ b/phone-book.js @@ -102,13 +102,15 @@ exports.findAndRemove = function (query) { let result = exports.find(query); let newPhone = ''; let index = 0; + let count = 0; for (var i = 0; i < result.length; i++) { index = result[i].indexOf('+7'); newPhone = transfomPhone(result[i].slice(index, index + 19)); + count += 1; delete this.phoneBook[newPhone]; } - return result.length; + return count; }; function transfomPhone(phone) { From c777e19d661235c0eea316275b1bbd8d13c84261 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:26:58 +0500 Subject: [PATCH 19/25] Update phone-book.js --- phone-book.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 96de002..2db56d8 100644 --- a/phone-book.js +++ b/phone-book.js @@ -23,6 +23,9 @@ var phoneBook; exports.add = function (phone, name, email) { if (this.phoneBook === undefined) { this.phoneBook = {}; + if (!checkArguments(phone, name)) { + return false; + } this.phoneBook[phone] = [phone, name, email]; return true; @@ -102,15 +105,13 @@ exports.findAndRemove = function (query) { let result = exports.find(query); let newPhone = ''; let index = 0; - let count = 0; for (var i = 0; i < result.length; i++) { index = result[i].indexOf('+7'); newPhone = transfomPhone(result[i].slice(index, index + 19)); - count += 1; delete this.phoneBook[newPhone]; } - return count; + return result.length; }; function transfomPhone(phone) { From 7395d0d82e64cb3cf91e293c1de1c841b8ffcae0 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:34:39 +0500 Subject: [PATCH 20/25] Update phone-book.js --- phone-book.js | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/phone-book.js b/phone-book.js index 2db56d8..0313972 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,16 +83,10 @@ exports.update = function (phone, name, email) { return false; } - for (var elem in this.phoneBook) { - if (phone === this.phoneBook[elem][0]) { - this.phoneBook[elem][1] = name; - this.phoneBook[elem][2] = email; + this.phoneBook[phone][1] = name; + this.phoneBook[phone][2] = email; - return true; - } - } - - return false; + return true; }; From 9d3e1b3f0ded4eeea4bfdc6bc6eea800bc3541b0 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:36:20 +0500 Subject: [PATCH 21/25] Update phone-book.js --- phone-book.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 0313972..2db56d8 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,10 +83,16 @@ exports.update = function (phone, name, email) { return false; } - this.phoneBook[phone][1] = name; - this.phoneBook[phone][2] = email; + for (var elem in this.phoneBook) { + if (phone === this.phoneBook[elem][0]) { + this.phoneBook[elem][1] = name; + this.phoneBook[elem][2] = email; - return true; + return true; + } + } + + return false; }; From 54883846999a06e6b1e577106387349aa05aedf1 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:39:52 +0500 Subject: [PATCH 22/25] Update phone-book.js --- phone-book.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index 2db56d8..aae4190 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,13 +83,11 @@ exports.update = function (phone, name, email) { return false; } - for (var elem in this.phoneBook) { - if (phone === this.phoneBook[elem][0]) { - this.phoneBook[elem][1] = name; - this.phoneBook[elem][2] = email; + if (phone === this.phoneBook[phone][0]) { + this.phoneBook[phone][1] = name; + this.phoneBook[phone][2] = email; - return true; - } + return true; } return false; From b0b96d23928ed1ea1f722c64c18d2e14ca27ff39 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:42:01 +0500 Subject: [PATCH 23/25] Update phone-book.js --- phone-book.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/phone-book.js b/phone-book.js index aae4190..2db56d8 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,11 +83,13 @@ exports.update = function (phone, name, email) { return false; } - if (phone === this.phoneBook[phone][0]) { - this.phoneBook[phone][1] = name; - this.phoneBook[phone][2] = email; + for (var elem in this.phoneBook) { + if (phone === this.phoneBook[elem][0]) { + this.phoneBook[elem][1] = name; + this.phoneBook[elem][2] = email; - return true; + return true; + } } return false; From cff0b6c32e4dc0ca894c5ca1edba3f6f4ab17045 Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:52:55 +0500 Subject: [PATCH 24/25] Update phone-book.js --- phone-book.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index 2db56d8..e68c996 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,6 +83,7 @@ exports.update = function (phone, name, email) { return false; } + let flag = true; for (var elem in this.phoneBook) { if (phone === this.phoneBook[elem][0]) { this.phoneBook[elem][1] = name; @@ -90,6 +91,10 @@ exports.update = function (phone, name, email) { return true; } + flag = false; + } + if (!flag) { + return exports.add(phone, name, email); } return false; @@ -187,8 +192,14 @@ exports.importFromCsv = function (csv) { let parts = []; for (var i = 0; i < persons.length; i++) { parts = persons[i].split(';'); - exports.add(parts[1], parts[0], parts[2]); - exports.update(parts[1], parts[0], parts[2]); + if (parts.length === 3) { + exports.add(parts[1], parts[0], parts[2]); + exports.update(parts[1], parts[0], parts[2]); + } + if (parts.length === 2) { + exports.add(parts[1], parts[0]); + exports.update(parts[1], parts[0]); + } } return Object.keys(this.phoneBook).length; From ef1afb5fcac4198dbb7154a9fcc091084d3133db Mon Sep 17 00:00:00 2001 From: OlgaPetrova96 <32207291+OlgaPetrova96@users.noreply.github.com> Date: Thu, 12 Oct 2017 16:55:27 +0500 Subject: [PATCH 25/25] Update phone-book.js --- phone-book.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/phone-book.js b/phone-book.js index e68c996..d2a3b1e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,7 +83,6 @@ exports.update = function (phone, name, email) { return false; } - let flag = true; for (var elem in this.phoneBook) { if (phone === this.phoneBook[elem][0]) { this.phoneBook[elem][1] = name; @@ -91,10 +90,6 @@ exports.update = function (phone, name, email) { return true; } - flag = false; - } - if (!flag) { - return exports.add(phone, name, email); } return false;