From 150e14c1d396226e6ffa140553e0bbc383e1ce71 Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 20:27:09 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 73 ++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 67 insertions(+), 6 deletions(-) diff --git a/phone-book.js b/phone-book.js index 891d7c01..3b64281b 100644 --- a/phone-book.js +++ b/phone-book.js @@ -19,7 +19,29 @@ let phoneBook; * @returns {Boolean} */ function add(phone, name, email) { - + if (phone.match(/^\d+$/) !== null + && phone.length === 10 + && name !== undefined) { + if (phoneBook === undefined) { + phoneBook = new Map(); + } + for(let key in phoneBook.keys()) { + if ((phoneBook[key].username === name + && key === phone + && phoneBook[key].useremail === email) || key === phone) { + return false; + } + } + let user = { + username : name, + useremail: email + }; + phoneBook.set(phone, user); + //console.log(phoneBook.has(phone)); + //console.log('=================='); + return true + } + return false } /** @@ -30,7 +52,17 @@ function add(phone, name, email) { * @returns {Boolean} */ function update(phone, name, email) { - + if (phoneBook.has(phone)) { + if (name !== undefined) { + let user = { + username : name, + useremail: email + }; + phoneBook.set(phone, user); + } + //console.log(phoneBook); + } + } /** @@ -39,7 +71,13 @@ function update(phone, name, email) { * @returns {Number} */ function findAndRemove(query) { - + let findres = find(query) + let val; + for (val of findres) { + let key = val[1].replace(/(\d{3})\) (\d{3})-(\d{2})-(\d{2})/, '$1$2$3$4').substring(4); + phoneBook.delete(key); + } + return findres.length; } /** @@ -48,7 +86,19 @@ function findAndRemove(query) { * @returns {String[]} */ function find(query) { - + if (query === '') { + return undefined + } + let patt = query + if (query === '*') { + patt = '' + } + let sorted = [...phoneBook.entries()].sort((a,b) => a[1].username > b[1].username).map(function(val) { + return [val[1].username, + val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), + val[1].useremail].filter(x => x !== undefined); + }); + return sorted.filter(x => x.join('').includes(patt)); } /** @@ -61,8 +111,19 @@ function importFromCsv(csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует - - return csv.split('\n').length; + let users = csv.split('\n').map(function(val) { + let arr = val.split(';'); + return [arr[1], arr[0], arr[2]]; + }); + let val; + let counter = 0; + for (val of users) { + if (add(...val)) { + counter++; + } + } + console.log(counter); + return counter; } module.exports = { From 74cd87e5d684cf5db2559619cdeb4dd4cebc222b Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 20:46:04 +0300 Subject: [PATCH 2/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/phone-book.js b/phone-book.js index 3b64281b..1da6db75 100644 --- a/phone-book.js +++ b/phone-book.js @@ -19,28 +19,29 @@ let phoneBook; * @returns {Boolean} */ function add(phone, name, email) { - if (phone.match(/^\d+$/) !== null - && phone.length === 10 - && name !== undefined) { - if (phoneBook === undefined) { - phoneBook = new Map(); + if (phone.match(/^\d+$/) !== null && + phone.length === 10 && + name !== undefined) { + if (phoneBook === undefined) { + phoneBook = new Map(); } - for(let key in phoneBook.keys()) { - if ((phoneBook[key].username === name - && key === phone - && phoneBook[key].useremail === email) || key === phone) { - return false; - } + for (let key in phoneBook.keys()) { + if ((phoneBook[key].username === name && + key === phone && + phoneBook[key].useremail === email) || key === phone) { + + return false; + } } let user = { - username : name, + username: name, useremail: email }; phoneBook.set(phone, user); - //console.log(phoneBook.has(phone)); - //console.log('=================='); + return true } + return false } @@ -55,14 +56,12 @@ function update(phone, name, email) { if (phoneBook.has(phone)) { if (name !== undefined) { let user = { - username : name, + username: name, useremail: email }; - phoneBook.set(phone, user); + phoneBook.set(phone, user); } - //console.log(phoneBook); } - } /** @@ -77,6 +76,7 @@ function findAndRemove(query) { let key = val[1].replace(/(\d{3})\) (\d{3})-(\d{2})-(\d{2})/, '$1$2$3$4').substring(4); phoneBook.delete(key); } + return findres.length; } @@ -87,17 +87,20 @@ function findAndRemove(query) { */ function find(query) { if (query === '') { - return undefined + + return } let patt = query if (query === '*') { patt = '' } let sorted = [...phoneBook.entries()].sort((a,b) => a[1].username > b[1].username).map(function(val) { - return [val[1].username, - val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), + + return [val[1].username, + val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), val[1].useremail].filter(x => x !== undefined); }); + return sorted.filter(x => x.join('').includes(patt)); } @@ -123,6 +126,7 @@ function importFromCsv(csv) { } } console.log(counter); + return counter; } From 7ad3c804de25adb9c4759f4707d54650350dfeda Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:01:22 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 47 ++++++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/phone-book.js b/phone-book.js index 1da6db75..45751a78 100644 --- a/phone-book.js +++ b/phone-book.js @@ -26,23 +26,23 @@ function add(phone, name, email) { phoneBook = new Map(); } for (let key in phoneBook.keys()) { - if ((phoneBook[key].username === name && - key === phone && - phoneBook[key].useremail === email) || key === phone) { - - return false; - } + if ((phoneBook[key].username === name && + key === phone && + phoneBook[key].useremail === email) || key === phone) { + + return false; + } } let user = { username: name, useremail: email }; phoneBook.set(phone, user); - - return true + + return true; } - return false + return false; } /** @@ -59,7 +59,7 @@ function update(phone, name, email) { username: name, useremail: email }; - phoneBook.set(phone, user); + phoneBook.set(phone, user); } } } @@ -70,13 +70,13 @@ function update(phone, name, email) { * @returns {Number} */ function findAndRemove(query) { - let findres = find(query) + let findres = find(query); let val; for (val of findres) { let key = val[1].replace(/(\d{3})\) (\d{3})-(\d{2})-(\d{2})/, '$1$2$3$4').substring(4); phoneBook.delete(key); } - + return findres.length; } @@ -87,20 +87,21 @@ function findAndRemove(query) { */ function find(query) { if (query === '') { - - return + + return; } - let patt = query + let patt = query; if (query === '*') { - patt = '' + patt = ''; } - let sorted = [...phoneBook.entries()].sort((a,b) => a[1].username > b[1].username).map(function(val) { + let sorted = [...phoneBook.entries()] + .sort((a, b) => a[1].username > b[1].username).map( function(val) { return [val[1].username, - val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), - val[1].useremail].filter(x => x !== undefined); + val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), + val[1].useremail].filter(x => x !== undefined); }); - + return sorted.filter(x => x.join('').includes(patt)); } @@ -114,8 +115,9 @@ function importFromCsv(csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует - let users = csv.split('\n').map(function(val) { + let users = csv.split('\n').map( function(val) { let arr = val.split(';'); + return [arr[1], arr[0], arr[2]]; }); let val; @@ -125,8 +127,7 @@ function importFromCsv(csv) { counter++; } } - console.log(counter); - + return counter; } From c9555da4ff497336be54001111272f7603149e58 Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:18:01 +0300 Subject: [PATCH 4/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82=20=D1=80=D0=B5=D1=88?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/phone-book.js b/phone-book.js index 45751a78..4dace606 100644 --- a/phone-book.js +++ b/phone-book.js @@ -9,7 +9,7 @@ const isStar = true; /** * Телефонная книга */ -let phoneBook; +let phoneBook = new Map(); /** * Добавление записи в телефонную книгу @@ -18,6 +18,18 @@ let phoneBook; * @param {String?} email * @returns {Boolean} */ + +function match(phone, name, email) { + for (let key in phoneBook.keys()) { + if ((phoneBook[key].username === name && + key === phone && + phoneBook[key].useremail === email) || key === phone) { + + return true; + } + } +} + function add(phone, name, email) { if (phone.match(/^\d+$/) !== null && phone.length === 10 && @@ -25,13 +37,9 @@ function add(phone, name, email) { if (phoneBook === undefined) { phoneBook = new Map(); } - for (let key in phoneBook.keys()) { - if ((phoneBook[key].username === name && - key === phone && - phoneBook[key].useremail === email) || key === phone) { - - return false; - } + if (match(phone, name, email)) { + + return false; } let user = { username: name, @@ -41,7 +49,7 @@ function add(phone, name, email) { return true; } - + return false; } @@ -96,7 +104,7 @@ function find(query) { } let sorted = [...phoneBook.entries()] .sort((a, b) => a[1].username > b[1].username).map( function(val) { - + return [val[1].username, val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), val[1].useremail].filter(x => x !== undefined); From 3465dbe2a2cca6b17373bf01acce8d7fb239201e Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:26:12 +0300 Subject: [PATCH 5/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/phone-book.js b/phone-book.js index 4dace606..b7d38050 100644 --- a/phone-book.js +++ b/phone-book.js @@ -18,7 +18,7 @@ let phoneBook = new Map(); * @param {String?} email * @returns {Boolean} */ - + function match(phone, name, email) { for (let key in phoneBook.keys()) { if ((phoneBook[key].username === name && @@ -49,7 +49,7 @@ function add(phone, name, email) { return true; } - + return false; } @@ -103,12 +103,12 @@ function find(query) { patt = ''; } let sorted = [...phoneBook.entries()] - .sort((a, b) => a[1].username > b[1].username).map( function(val) { - - return [val[1].username, - val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), - val[1].useremail].filter(x => x !== undefined); - }); + .sort((a, b) => a[1].username > b[1].username).map( function( val) { + + return [val[1].username, + val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), + val[1].useremail].filter(x => x !== undefined); + }); return sorted.filter(x => x.join('').includes(patt)); } @@ -123,7 +123,7 @@ function importFromCsv(csv) { // Парсим csv // Добавляем в телефонную книгу // Либо обновляем, если запись с таким телефоном уже существует - let users = csv.split('\n').map( function(val) { + let users = csv.split('\n').map( function( val) { let arr = val.split(';'); return [arr[1], arr[0], arr[2]]; From 8a0bb44f06d9966b5d968d13a3c3d8abaff91b02 Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:30:26 +0300 Subject: [PATCH 6/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/phone-book.js b/phone-book.js index b7d38050..cf556559 100644 --- a/phone-book.js +++ b/phone-book.js @@ -53,13 +53,6 @@ function add(phone, name, email) { return false; } -/** - * Обновление записи в телефонной книге - * @param {String} phone - * @param {String?} name - * @param {String?} email - * @returns {Boolean} - */ function update(phone, name, email) { if (phoneBook.has(phone)) { if (name !== undefined) { @@ -103,7 +96,7 @@ function find(query) { patt = ''; } let sorted = [...phoneBook.entries()] - .sort((a, b) => a[1].username > b[1].username).map( function( val) { + .sort((a, b) => a[1].username > b[1].username).map ( function ( val) { return [val[1].username, val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), From cf280c2e7cc35281ada15a2d8eacab0d52c94b95 Mon Sep 17 00:00:00 2001 From: agrossers <33430529+agrossers@users.noreply.github.com> Date: Thu, 25 Oct 2018 21:37:19 +0300 Subject: [PATCH 7/7] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=B2=D0=B0=D1=80=D0=B8=D0=B0=D0=BD=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- phone-book.js | 30 ++---------------------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/phone-book.js b/phone-book.js index cf556559..516b0822 100644 --- a/phone-book.js +++ b/phone-book.js @@ -11,13 +11,6 @@ const isStar = true; */ let phoneBook = new Map(); -/** - * Добавление записи в телефонную книгу - * @param {String} phone - * @param {String?} name - * @param {String?} email - * @returns {Boolean} - */ function match(phone, name, email) { for (let key in phoneBook.keys()) { @@ -65,11 +58,6 @@ function update(phone, name, email) { } } -/** - * Удаление записей по запросу из телефонной книги - * @param {String} query - * @returns {Number} - */ function findAndRemove(query) { let findres = find(query); let val; @@ -81,11 +69,6 @@ function findAndRemove(query) { return findres.length; } -/** - * Поиск записей по запросу в телефонной книге - * @param {String} query - * @returns {String[]} - */ function find(query) { if (query === '') { @@ -96,7 +79,7 @@ function find(query) { patt = ''; } let sorted = [...phoneBook.entries()] - .sort((a, b) => a[1].username > b[1].username).map ( function ( val) { + .sort((a, b) => a[1].username > b[1].username).map (function (val) { return [val[1].username, val[0].replace(/(\d{3})(\d{3})(\d{2})(\d{2})/, '+7 ($1) $2-$3-$4'), @@ -106,17 +89,8 @@ function find(query) { return sorted.filter(x => x.join('').includes(patt)); } -/** - * Импорт записей из csv-формата - * @star - * @param {String} csv - * @returns {Number} – количество добавленных и обновленных записей - */ function importFromCsv(csv) { - // Парсим csv - // Добавляем в телефонную книгу - // Либо обновляем, если запись с таким телефоном уже существует - let users = csv.split('\n').map( function( val) { + let users = csv.split('\n').map (function (val) { let arr = val.split(';'); return [arr[1], arr[0], arr[2]];