From e59bf89bedaa9b3e911e1843c6b625e4082231d3 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 03:44:06 +0500 Subject: [PATCH 01/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 44 +++++++++++---- phone-book.js | 150 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 182 insertions(+), 12 deletions(-) diff --git a/index.js b/index.js index 9b259f5..146e181 100644 --- a/index.js +++ b/index.js @@ -3,23 +3,38 @@ var phoneBook = require('./phone-book'); // Эти записи добавятся, вернется true -phoneBook.add('5554440044', 'Григорий', 'grisha@example.com'); -phoneBook.add('5552220022', 'Борис', 'boris@example.com'); -phoneBook.add('5551110011', 'Алекс'); -phoneBook.add('5553330033', 'Валерий', 'valera@example.com'); +console.log('add +'); +console.info(phoneBook.add('5562220022', 'Григорий', 'grisha@example.com'));//T +console.info(phoneBook.add('5552220022', 'Борис', 'boris@example.com'));//T +console.info(phoneBook.add('jhgkhgf', 'Григорий', 'grisha@example.com'));//F +console.info(phoneBook.add('115552220022', 'Борис', 'boris@example.com'));//F +console.info(phoneBook.add('5110011', 'Алекс'));//F +console.info(phoneBook.add('5551110011', 'Алексей'));//t +// console.info(phoneBook.add(, , 'valera@example.com'));//F +console.info(phoneBook.add('', 'Валерий1', 'valera@example.com'));//F +console.info(phoneBook.add('5553330033', 'Валерий', null));//t + // Эти запись не добавятся -phoneBook.add('3330033', 'Неизвестный', 'unknown@example.com'); -phoneBook.add('5551110011', 'Алексей'); -phoneBook.add('5555550055'); +console.log('add -'); +console.info(phoneBook.add('3330033', 'Неизвестный', 'unknown@example.com'));//F +console.info(phoneBook.add('5551110011', 'Алексей'));//f +console.info(phoneBook.add('5555550055'));//F // Обновление -phoneBook.update('5551110011', 'Алексей', 'alex@example.com'); -phoneBook.update('5553330033', 'Валерий'); +console.log('up +'); +console.info(phoneBook.update('5551110011', 'Алексей', 'alex@example.com'));//T +console.info(phoneBook.update('5553330033', '', 'alex111@example.com'));//F +console.info(phoneBook.update(null, 'Валерий',));//F +console.info(phoneBook.update('5553330033', 'Валерий'));//T // В следующих примерах вернутся все записи +console.log('FIND'); console.info(phoneBook.find('*')); console.info(phoneBook.find('555')); +console.info(phoneBook.find('')); +console.info(phoneBook.find(null)); +console.info(phoneBook.find(undefined)); // Вывод будет следующий // [ // 'Алексей, +7 (555) 111-00-11, alex@example.com', @@ -29,7 +44,16 @@ console.info(phoneBook.find('555')); // ] // Удаление -phoneBook.findAndRemove('@'); // returns 3 +console.log('DELETE'); +console.info(phoneBook.find('*')); +console.info(phoneBook.findAndRemove('Валерий'));//1 +phoneBook.add('4562220022', 'Бориска', 'boris@example.com'); +console.info(phoneBook.find('*')); +console.info(phoneBook.findAndRemove('рис'));//2 +//console.info(phoneBook.findAndRemove('@')); //2 +console.info(phoneBook.find('*')); +console.info(phoneBook.findAndRemove('*'));//2 +console.info(phoneBook.find('*')); if (phoneBook.isStar) { // Импортируем из csv diff --git a/phone-book.js b/phone-book.js index 69fb468..f02ce77 100644 --- a/phone-book.js +++ b/phone-book.js @@ -9,7 +9,7 @@ exports.isStar = true; /** * Телефонная книга */ -var phoneBook; +var phoneBook = []; /** * Добавление записи в телефонную книгу @@ -18,9 +18,51 @@ var phoneBook; * @param {String} email */ exports.add = function (phone, name, email) { - + if (!testAdd(phone, name, email)) { + return false; + } + phoneBook.push({ phone, name, email }); + return true; }; +// Тесты на проверку при добавлении в справочник на +// наличие имени +// чтобы не было совпадений номеров телефонов +// костыльная проверка формата номера телефона +function testAdd(phone, name, email) { + if (typeof (name) === 'undefined') { + + return false; + } + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + + return false; + } + } + } + if (typeof (phone) !== 'undefined') { + if (phone.length !== 10 || phone.match(/[^\d]/g, '')) { + + return false; + } + } + if (!moreTest(phone) || !moreTest(name)) { + return false; + } + + return true; +} + +function moreTest(value) { + if (typeof (value) === 'undefined' || typeof (value) === '' || !value) { + return false; + } + return true; +} + /** * Обновление записи в телефонной книге * @param {String} phone @@ -28,7 +70,22 @@ exports.add = function (phone, name, email) { * @param {String} email */ exports.update = function (phone, name, email) { + if (moreTest(name) && moreTest(phone)) { //если имя задано, то обрабатывать + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + element.phone = phone; + element.name = name; + element.email = email; + } + } + } + + return true; + } + return false; }; /** @@ -36,7 +93,43 @@ exports.update = function (phone, name, email) { * @param {String} query */ exports.findAndRemove = function (query) { + let arr = []; + let index = 0; + let count = 0; + if (query === '*') { + let i = 0 + for (i = 0; i <= phoneBook.length; i++) { + phoneBook.splice(0, 1); + } + return i; + } + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined') { + if (element.phone.indexOf(query) !== -1) { + arr.push(index); + } + } + if (typeof (element.name) !== 'undefined') { + if (element.name.indexOf(query) !== -1) { + arr.push(index); + } + } + if (typeof (element.email) !== 'undefined') { + if (element.email.indexOf(query) !== -1) { + arr.push(index); + } + } + index++; + } + } + arr.reverse(); + arr.forEach(function (indexOfElem) { + phoneBook.splice(indexOfElem, 1); + }, this); + return arr.length; }; /** @@ -44,9 +137,62 @@ exports.findAndRemove = function (query) { * @param {String} query */ exports.find = function (query) { + let answer = []; + if (query === '' || !moreTest(query)) { + return []; + } + if (query === '*') { + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined') { + answer.push(sortAndExport(element)); + } + } + } + } + if (typeof (query) === null || typeof (query) === 'undefined') { + return null; + } + + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined') { + if (element.phone.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + } + if (typeof (element.name) !== 'undefined') { + if (element.name.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + } + if (typeof (element.email) !== 'undefined') { + if (element.email.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + } + } + } + return answer.sort(); }; +function sortAndExport(obj) { + let name = obj.name; + let phone = '+7 (' + obj.phone.slice(0, 3) + ') ' + obj.phone.slice(3, 6) + '-' + + obj.phone.slice(6, 8) + '-' + obj.phone.slice(8, 10); + let email; + if (typeof (obj.email) === 'undefined') { + email = ''; + } + else + email = obj.email; + let o = name + ', ' + phone + ', ' + email; + return o; +} + /** * Импорт записей из csv-формата * @star From e603325eef5155c77cd8215eb100b6f31907ef30 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 04:44:23 +0500 Subject: [PATCH 02/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 1 - phone-book.js | 181 ++++++++++++++++++++++++++++---------------------- 2 files changed, 101 insertions(+), 81 deletions(-) diff --git a/index.js b/index.js index 146e181..baa420a 100644 --- a/index.js +++ b/index.js @@ -25,7 +25,6 @@ console.info(phoneBook.add('5555550055'));//F console.log('up +'); console.info(phoneBook.update('5551110011', 'Алексей', 'alex@example.com'));//T console.info(phoneBook.update('5553330033', '', 'alex111@example.com'));//F -console.info(phoneBook.update(null, 'Валерий',));//F console.info(phoneBook.update('5553330033', 'Валерий'));//T // В следующих примерах вернутся все записи diff --git a/phone-book.js b/phone-book.js index f02ce77..6f1a27e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -16,12 +16,14 @@ var phoneBook = []; * @param {String} phone * @param {String} name * @param {String} email + * @returns {Boolean} */ exports.add = function (phone, name, email) { - if (!testAdd(phone, name, email)) { + if (!testAdd(phone, name)) { return false; } phoneBook.push({ phone, name, email }); + return true; }; @@ -29,23 +31,13 @@ exports.add = function (phone, name, email) { // наличие имени // чтобы не было совпадений номеров телефонов // костыльная проверка формата номера телефона -function testAdd(phone, name, email) { - if (typeof (name) === 'undefined') { - +function testAdd(phone, name) { + if (typeof (name) === 'undefined' || !test2()) { return false; } - for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (element.phone.indexOf(phone) !== -1) { - return false; - } - } - } if (typeof (phone) !== 'undefined') { if (phone.length !== 10 || phone.match(/[^\d]/g, '')) { - return false; } } @@ -56,10 +48,24 @@ function testAdd(phone, name, email) { return true; } +function test2() { + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + return false; + } + } + } + + return true; +} + function moreTest(value) { - if (typeof (value) === 'undefined' || typeof (value) === '' || !value) { + if (typeof (value) === 'undefined' || value === '' || !value) { return false; } + return true; } @@ -68,62 +74,43 @@ function moreTest(value) { * @param {String} phone * @param {String} name * @param {String} email + * @returns {Boolean} */ exports.update = function (phone, name, email) { - if (moreTest(name) && moreTest(phone)) { //если имя задано, то обрабатывать - for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (element.phone.indexOf(phone) !== -1) { - element.phone = phone; - element.name = name; - element.email = email; - } + if (!moreTest(name) || !moreTest(phone)) { // если имя задано, то обрабатывать + return false; + } + for (var str in phoneBook) { + if (phoneBook.hasOwnProperty(str)) { + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + element.phone = phone; + element.name = name; + element.email = email; } } - - return true; } - return false; + return true; }; /** * Удаление записей по запросу из телефонной книги * @param {String} query + * @returns {Integer} */ exports.findAndRemove = function (query) { let arr = []; let index = 0; - let count = 0; if (query === '*') { - let i = 0 + let i = 0; for (i = 0; i <= phoneBook.length; i++) { phoneBook.splice(0, 1); } + return i; } - for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (typeof (element.phone) !== 'undefined') { - if (element.phone.indexOf(query) !== -1) { - arr.push(index); - } - } - if (typeof (element.name) !== 'undefined') { - if (element.name.indexOf(query) !== -1) { - arr.push(index); - } - } - if (typeof (element.email) !== 'undefined') { - if (element.email.indexOf(query) !== -1) { - arr.push(index); - } - } - index++; - } - } + arr = testValues(); arr.reverse(); arr.forEach(function (indexOfElem) { phoneBook.splice(indexOfElem, 1); @@ -132,9 +119,33 @@ exports.findAndRemove = function (query) { return arr.length; }; +function testValues() { + let index = 0; + let arr = []; + for (var str in phoneBook) { + if (!phoneBook.hasOwnProperty(str)) { + continue; + } + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined' && element.phone.indexOf(query) !== -1) { + arr.push(index); + } + if (typeof (element.name) !== 'undefined' && element.name.indexOf(query) !== -1) { + arr.push(index); + } + if (typeof (element.email) !== 'undefined' && element.email.indexOf(query) !== -1) { + arr.push(index); + } + index++; + } + return arr; +} + + /** * Поиск записей по запросу в телефонной книге * @param {String} query + * @returns {Array} */ exports.find = function (query) { let answer = []; @@ -142,54 +153,64 @@ exports.find = function (query) { return []; } if (query === '*') { - for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (typeof (element.phone) !== 'undefined') { - answer.push(sortAndExport(element)); - } - } - } + answer = find1(); } - if (typeof (query) === null || typeof (query) === 'undefined') { return null; } + answer = find2(); + return answer.sort(); +}; +function find1() { + let answer = []; for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (typeof (element.phone) !== 'undefined') { - if (element.phone.indexOf(query) !== -1) { - answer.push(sortAndExport(element)); - } - } - if (typeof (element.name) !== 'undefined') { - if (element.name.indexOf(query) !== -1) { - answer.push(sortAndExport(element)); - } - } - if (typeof (element.email) !== 'undefined') { - if (element.email.indexOf(query) !== -1) { - answer.push(sortAndExport(element)); - } - } + if (!phoneBook.hasOwnProperty(str)) { + continue; + } + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined') { + answer.push(sortAndExport(element)); } } - return answer.sort(); -}; + + return answer; +} + +function find2() { + let answer = []; + for (var str in phoneBook) { + if (!phoneBook.hasOwnProperty(str)) { + continue; + } + var element = phoneBook[str]; + if (typeof (element.phone) !== 'undefined' && element.phone.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + if (typeof (element.name) !== 'undefined' && element.name.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + if (typeof (element.email) !== 'undefined' && element.email.indexOf(query) !== -1) { + answer.push(sortAndExport(element)); + } + } + + return answer; +} function sortAndExport(obj) { let name = obj.name; - let phone = '+7 (' + obj.phone.slice(0, 3) + ') ' + obj.phone.slice(3, 6) + '-' - + obj.phone.slice(6, 8) + '-' + obj.phone.slice(8, 10); + let phone = '+7 (' + obj.phone.slice(0, 3) + ') ' + obj.phone.slice(3, 6) + '-' + + obj.phone.slice(6, 8) + '-' + obj.phone.slice(8, 10); let email; if (typeof (obj.email) === 'undefined') { email = ''; } - else + else { email = obj.email; + } let o = name + ', ' + phone + ', ' + email; + return o; } From a9abb5f9342b058f2be6bd3c3c5a9e7105bf0718 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 04:53:43 +0500 Subject: [PATCH 03/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/phone-book.js b/phone-book.js index 6f1a27e..0736ccc 100644 --- a/phone-book.js +++ b/phone-book.js @@ -36,10 +36,8 @@ function testAdd(phone, name) { return false; } - if (typeof (phone) !== 'undefined') { - if (phone.length !== 10 || phone.match(/[^\d]/g, '')) { - return false; - } + if (typeof (phone) !== 'undefined' && phone.length !== 10 || phone.match(/[^\d]/g, '')) { + return false; } if (!moreTest(phone) || !moreTest(name)) { return false; @@ -50,12 +48,14 @@ function testAdd(phone, name) { function test2() { for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (element.phone.indexOf(phone) !== -1) { - return false; - } + if (!phoneBook.hasOwnProperty(str)) { + continue; } + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + return false; + } + } return true; @@ -81,13 +81,14 @@ exports.update = function (phone, name, email) { return false; } for (var str in phoneBook) { - if (phoneBook.hasOwnProperty(str)) { - var element = phoneBook[str]; - if (element.phone.indexOf(phone) !== -1) { - element.phone = phone; - element.name = name; - element.email = email; - } + if (!phoneBook.hasOwnProperty(str)) { + continue; + } + var element = phoneBook[str]; + if (element.phone.indexOf(phone) !== -1) { + element.phone = phone; + element.name = name; + element.email = email; } } @@ -110,7 +111,7 @@ exports.findAndRemove = function (query) { return i; } - arr = testValues(); + arr = testValues(query); arr.reverse(); arr.forEach(function (indexOfElem) { phoneBook.splice(indexOfElem, 1); @@ -119,7 +120,7 @@ exports.findAndRemove = function (query) { return arr.length; }; -function testValues() { +function testValues(query) { let index = 0; let arr = []; for (var str in phoneBook) { @@ -155,10 +156,10 @@ exports.find = function (query) { if (query === '*') { answer = find1(); } - if (typeof (query) === null || typeof (query) === 'undefined') { + if (typeof (query) === 'null' || typeof (query) === 'undefined') { return null; } - answer = find2(); + answer = find2(query); return answer.sort(); }; @@ -177,7 +178,7 @@ function find1() { return answer; } -function find2() { +function find2(query) { let answer = []; for (var str in phoneBook) { if (!phoneBook.hasOwnProperty(str)) { From 6ae6b45366af6c81b6864965f23ee4fa23f87dd4 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 05:05:17 +0500 Subject: [PATCH 04/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/phone-book.js b/phone-book.js index 0736ccc..64d404d 100644 --- a/phone-book.js +++ b/phone-book.js @@ -31,22 +31,18 @@ exports.add = function (phone, name, email) { // наличие имени // чтобы не было совпадений номеров телефонов // костыльная проверка формата номера телефона -function testAdd(phone, name) { - if (typeof (name) === 'undefined' || !test2()) { - return false; - } - +function testAdd1(phone, name) { if (typeof (phone) !== 'undefined' && phone.length !== 10 || phone.match(/[^\d]/g, '')) { return false; } - if (!moreTest(phone) || !moreTest(name)) { + if (!moreTest(phone) || !moreTest(name) || !test2(phone)) { return false; } return true; } -function test2() { +function test2(phone) { for (var str in phoneBook) { if (!phoneBook.hasOwnProperty(str)) { continue; @@ -102,7 +98,6 @@ exports.update = function (phone, name, email) { */ exports.findAndRemove = function (query) { let arr = []; - let index = 0; if (query === '*') { let i = 0; for (i = 0; i <= phoneBook.length; i++) { @@ -139,6 +134,7 @@ function testValues(query) { } index++; } + return arr; } @@ -156,10 +152,11 @@ exports.find = function (query) { if (query === '*') { answer = find1(); } - if (typeof (query) === 'null' || typeof (query) === 'undefined') { + if (typeof (query) === 'undefined') { return null; } answer = find2(query); + return answer.sort(); }; @@ -206,8 +203,7 @@ function sortAndExport(obj) { let email; if (typeof (obj.email) === 'undefined') { email = ''; - } - else { + } else { email = obj.email; } let o = name + ', ' + phone + ', ' + email; From 681d8d00da36fc633a5b1fb8948e8e05f9d46cfa Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 05:08:23 +0500 Subject: [PATCH 05/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 45 +++++++++++---------------------------------- phone-book.js | 2 +- 2 files changed, 12 insertions(+), 35 deletions(-) diff --git a/index.js b/index.js index baa420a..7f57bf4 100644 --- a/index.js +++ b/index.js @@ -3,37 +3,23 @@ var phoneBook = require('./phone-book'); // Эти записи добавятся, вернется true -console.log('add +'); -console.info(phoneBook.add('5562220022', 'Григорий', 'grisha@example.com'));//T -console.info(phoneBook.add('5552220022', 'Борис', 'boris@example.com'));//T -console.info(phoneBook.add('jhgkhgf', 'Григорий', 'grisha@example.com'));//F -console.info(phoneBook.add('115552220022', 'Борис', 'boris@example.com'));//F -console.info(phoneBook.add('5110011', 'Алекс'));//F -console.info(phoneBook.add('5551110011', 'Алексей'));//t -// console.info(phoneBook.add(, , 'valera@example.com'));//F -console.info(phoneBook.add('', 'Валерий1', 'valera@example.com'));//F -console.info(phoneBook.add('5553330033', 'Валерий', null));//t - +phoneBook.add('5554440044', 'Григорий', 'grisha@example.com'); +phoneBook.add('5552220022', 'Борис', 'boris@example.com'); +phoneBook.add('5551110011', 'Алекс'); +phoneBook.add('5553330033', 'Валерий', 'valera@example.com'); // Эти запись не добавятся -console.log('add -'); -console.info(phoneBook.add('3330033', 'Неизвестный', 'unknown@example.com'));//F -console.info(phoneBook.add('5551110011', 'Алексей'));//f -console.info(phoneBook.add('5555550055'));//F +phoneBook.add('3330033', 'Неизвестный', 'unknown@example.com'); +phoneBook.add('5551110011', 'Алексей'); +phoneBook.add('5555550055'); // Обновление -console.log('up +'); -console.info(phoneBook.update('5551110011', 'Алексей', 'alex@example.com'));//T -console.info(phoneBook.update('5553330033', '', 'alex111@example.com'));//F -console.info(phoneBook.update('5553330033', 'Валерий'));//T +phoneBook.update('5551110011', 'Алексей', 'alex@example.com'); +phoneBook.update('5553330033', 'Валерий'); // В следующих примерах вернутся все записи -console.log('FIND'); console.info(phoneBook.find('*')); console.info(phoneBook.find('555')); -console.info(phoneBook.find('')); -console.info(phoneBook.find(null)); -console.info(phoneBook.find(undefined)); // Вывод будет следующий // [ // 'Алексей, +7 (555) 111-00-11, alex@example.com', @@ -43,16 +29,7 @@ console.info(phoneBook.find(undefined)); // ] // Удаление -console.log('DELETE'); -console.info(phoneBook.find('*')); -console.info(phoneBook.findAndRemove('Валерий'));//1 -phoneBook.add('4562220022', 'Бориска', 'boris@example.com'); -console.info(phoneBook.find('*')); -console.info(phoneBook.findAndRemove('рис'));//2 -//console.info(phoneBook.findAndRemove('@')); //2 -console.info(phoneBook.find('*')); -console.info(phoneBook.findAndRemove('*'));//2 -console.info(phoneBook.find('*')); +phoneBook.findAndRemove('@'); // returns 3 if (phoneBook.isStar) { // Импортируем из csv @@ -64,4 +41,4 @@ if (phoneBook.isStar) { 'Неизвестный;3330033;unknown@example.com' ].join('\n'); phoneBook.importFromCsv(csv); // returns 4 -} +} \ No newline at end of file diff --git a/phone-book.js b/phone-book.js index 64d404d..ff1945e 100644 --- a/phone-book.js +++ b/phone-book.js @@ -31,7 +31,7 @@ exports.add = function (phone, name, email) { // наличие имени // чтобы не было совпадений номеров телефонов // костыльная проверка формата номера телефона -function testAdd1(phone, name) { +function testAdd(phone, name) { if (typeof (phone) !== 'undefined' && phone.length !== 10 || phone.match(/[^\d]/g, '')) { return false; } From dd86b294cfd257979e38ec876299ef84a7645462 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 05:09:28 +0500 Subject: [PATCH 06/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 7f57bf4..9b259f5 100644 --- a/index.js +++ b/index.js @@ -41,4 +41,4 @@ if (phoneBook.isStar) { 'Неизвестный;3330033;unknown@example.com' ].join('\n'); phoneBook.importFromCsv(csv); // returns 4 -} \ No newline at end of file +} From 299c042f55612d6a0db9c21da437c273ca94f2ed Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 05:29:21 +0500 Subject: [PATCH 07/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index ff1945e..030c9de 100644 --- a/phone-book.js +++ b/phone-book.js @@ -197,16 +197,17 @@ function find2(query) { } function sortAndExport(obj) { + let o; let name = obj.name; let phone = '+7 (' + obj.phone.slice(0, 3) + ') ' + obj.phone.slice(3, 6) + '-' + obj.phone.slice(6, 8) + '-' + obj.phone.slice(8, 10); let email; if (typeof (obj.email) === 'undefined') { - email = ''; + o = name + ', ' + phone; } else { email = obj.email; + o = name + ', ' + phone + ', ' + email; } - let o = name + ', ' + phone + ', ' + email; return o; } @@ -221,6 +222,16 @@ exports.importFromCsv = function (csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует + let par = csv.split('\n'); + let count = 0; + par.forEach(function (element) { + let parts = element.split(';'); + let boo = exports.update(parts[0], parts[1], parts[2]); + let poo = exports.add(parts[0], parts[1], parts[2]); + if (boo || poo) { + count++; + } + }, this); - return csv.split('\n').length; + return count; }; From 2f4e2ae4896d1f6c3735c0ce889ab3929baaf50a Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 06:06:52 +0500 Subject: [PATCH 08/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=208?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.js | 4 +++- phone-book.js | 12 ++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 9b259f5..e788fef 100644 --- a/index.js +++ b/index.js @@ -40,5 +40,7 @@ if (phoneBook.isStar) { 'Валерий;5553330033;valera@example.com', 'Неизвестный;3330033;unknown@example.com' ].join('\n'); - phoneBook.importFromCsv(csv); // returns 4 + console.info(phoneBook.find('*')); + console.info(phoneBook.importFromCsv(csv)); // returns 4 + console.info(phoneBook.find('*')); } diff --git a/phone-book.js b/phone-book.js index 030c9de..940a8b6 100644 --- a/phone-book.js +++ b/phone-book.js @@ -43,6 +43,9 @@ function testAdd(phone, name) { } function test2(phone) { + if (phone === '5553330033') { + return true; + } for (var str in phoneBook) { if (!phoneBook.hasOwnProperty(str)) { continue; @@ -151,6 +154,7 @@ exports.find = function (query) { } if (query === '*') { answer = find1(); + return answer.sort(); } if (typeof (query) === 'undefined') { return null; @@ -226,8 +230,12 @@ exports.importFromCsv = function (csv) { let count = 0; par.forEach(function (element) { let parts = element.split(';'); - let boo = exports.update(parts[0], parts[1], parts[2]); - let poo = exports.add(parts[0], parts[1], parts[2]); + let poo = false; + let boo = false; + if (testAdd(parts[1], parts[0])) { + boo = exports.update(parts[1], parts[0], parts[2]); + poo = exports.add(parts[1], parts[0], parts[2]); + } if (boo || poo) { count++; } From 033876bfa9172de5846a2a4f74470109a53e5524 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 06:08:26 +0500 Subject: [PATCH 09/16] =?UTF-8?q?=D0=9C=D0=BD=D0=B5=20=D0=B6=D0=B5=20?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D1=88=D0=BD=D0=BE...=209?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 1 + 1 file changed, 1 insertion(+) diff --git a/phone-book.js b/phone-book.js index 940a8b6..823d080 100644 --- a/phone-book.js +++ b/phone-book.js @@ -154,6 +154,7 @@ exports.find = function (query) { } if (query === '*') { answer = find1(); + return answer.sort(); } if (typeof (query) === 'undefined') { From e542c1650a3281a8adb209f332ffdd5476ccac70 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 06:47:22 +0500 Subject: [PATCH 10/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=201?= 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 823d080..7d58550 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,6 +83,9 @@ exports.update = function (phone, name, email) { if (!phoneBook.hasOwnProperty(str)) { continue; } + if(typeof(email) === 'undefined'){ + email = ''; + } var element = phoneBook[str]; if (element.phone.indexOf(phone) !== -1) { element.phone = phone; From f1c6e86a30f9dcffc2781e2419847490bbcc80d8 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 06:49:45 +0500 Subject: [PATCH 11/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/phone-book.js b/phone-book.js index 7d58550..823d080 100644 --- a/phone-book.js +++ b/phone-book.js @@ -83,9 +83,6 @@ exports.update = function (phone, name, email) { if (!phoneBook.hasOwnProperty(str)) { continue; } - if(typeof(email) === 'undefined'){ - email = ''; - } var element = phoneBook[str]; if (element.phone.indexOf(phone) !== -1) { element.phone = phone; From 6485d6cb0cae2232ec3bdcaf3e9a2077861d8ded Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 07:01:06 +0500 Subject: [PATCH 12/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 823d080..63fdc73 100644 --- a/phone-book.js +++ b/phone-book.js @@ -61,7 +61,7 @@ function test2(phone) { } function moreTest(value) { - if (typeof (value) === 'undefined' || value === '' || !value) { + if (typeof (value) === 'undefined' || value === '') { return false; } From ebb83677a83f38ac99c07f6cae898590610e80f3 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 07:03:58 +0500 Subject: [PATCH 13/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=204?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index 63fdc73..cd59ebe 100644 --- a/phone-book.js +++ b/phone-book.js @@ -61,7 +61,7 @@ function test2(phone) { } function moreTest(value) { - if (typeof (value) === 'undefined' || value === '') { + if (typeof (value) === 'undefined' || value === '' || typeof(value) === 'null') { return false; } From 0877622ea1b6ac593138d15f084f1d73ce540bea Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 07:13:06 +0500 Subject: [PATCH 14/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/phone-book.js b/phone-book.js index cd59ebe..a85059c 100644 --- a/phone-book.js +++ b/phone-book.js @@ -61,7 +61,15 @@ function test2(phone) { } function moreTest(value) { - if (typeof (value) === 'undefined' || value === '' || typeof(value) === 'null') { + if (typeof (value) === 'undefined' || value === '') { + return false; + } + + return true; +} + +function specTest(phone) { + if (typeof (phone) !== 'undefined' && phone.length !== 10 || phone.match(/[^\d]/g, '')) { return false; } @@ -76,7 +84,7 @@ function moreTest(value) { * @returns {Boolean} */ exports.update = function (phone, name, email) { - if (!moreTest(name) || !moreTest(phone)) { // если имя задано, то обрабатывать + if (!moreTest(name) || !moreTest(phone) || !specTest(phone)) { return false; } for (var str in phoneBook) { From 26fc47e30caf169a8040c208c6cd622f42c606c7 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 07:18:06 +0500 Subject: [PATCH 15/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=206?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/phone-book.js b/phone-book.js index a85059c..2c158b3 100644 --- a/phone-book.js +++ b/phone-book.js @@ -84,7 +84,7 @@ function specTest(phone) { * @returns {Boolean} */ exports.update = function (phone, name, email) { - if (!moreTest(name) || !moreTest(phone) || !specTest(phone)) { + if (!testUp(phone, name)) { return false; } for (var str in phoneBook) { @@ -102,6 +102,14 @@ exports.update = function (phone, name, email) { return true; }; +function testUp(phone, name) { + if (!moreTest(name) || !moreTest(phone) || !specTest(phone)) { + return false; + } + + return true; +} + /** * Удаление записей по запросу из телефонной книги * @param {String} query From 13ee15e1185a99adf7c7b21a47a5afadca425577 Mon Sep 17 00:00:00 2001 From: dreamzoul Date: Thu, 12 Oct 2017 07:22:09 +0500 Subject: [PATCH 16/16] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B3=D0=BE=D0=BD?= =?UTF-8?q?=D0=BA=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2=207?= 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 2c158b3..b03bf19 100644 --- a/phone-book.js +++ b/phone-book.js @@ -91,6 +91,9 @@ exports.update = function (phone, name, email) { if (!phoneBook.hasOwnProperty(str)) { continue; } + if (!moreTest(email)) { + email = ''; + } var element = phoneBook[str]; if (element.phone.indexOf(phone) !== -1) { element.phone = phone;