Skip to content
Open
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
375588a
Update phone-book.js
konstantinator Oct 10, 2017
0acdb46
Update phone-book.js
konstantinator Oct 10, 2017
f97faaf
Update phone-book.js
konstantinator Oct 10, 2017
e522d34
Update phone-book.js
konstantinator Oct 10, 2017
fd90b53
Update phone-book.js
konstantinator Oct 10, 2017
a3eadac
Update phone-book.js
konstantinator Oct 10, 2017
60f5943
Update phone-book.js
konstantinator Oct 10, 2017
b63bdcb
Update phone-book.js
konstantinator Oct 10, 2017
3a073fb
Update phone-book.js
konstantinator Oct 10, 2017
d8bcf8f
Update phone-book.js
konstantinator Oct 11, 2017
c45f9e7
Update phone-book.js
konstantinator Oct 11, 2017
4584ab1
Update phone-book.js
konstantinator Oct 11, 2017
a58a5d2
Update phone-book.js
konstantinator Oct 11, 2017
bbf66e0
Update phone-book.js
konstantinator Oct 11, 2017
5e4dfe1
Update phone-book.js
konstantinator Oct 11, 2017
7ff8881
Update phone-book.js
konstantinator Oct 11, 2017
e2e2a0a
Update phone-book.js
konstantinator Oct 11, 2017
e3c4436
Update phone-book.js
konstantinator Oct 11, 2017
70aafc9
Update phone-book.js
konstantinator Oct 11, 2017
985709e
Update phone-book.js
konstantinator Oct 11, 2017
61723f1
Update phone-book.js
konstantinator Oct 11, 2017
f9b3aa0
Update phone-book.js
konstantinator Oct 11, 2017
7d6ff18
Update phone-book.js
konstantinator Oct 11, 2017
d2a1005
Update phone-book.js
konstantinator Oct 11, 2017
87b8a23
Update phone-book.js
konstantinator Oct 11, 2017
bfa7295
Update phone-book.js
konstantinator Oct 11, 2017
d6a8d81
Update phone-book.js
konstantinator Oct 11, 2017
dc5c1d8
Update phone-book.js
konstantinator Oct 11, 2017
6268c45
Update phone-book.js
konstantinator Oct 11, 2017
940c819
Update phone-book.js
konstantinator Oct 11, 2017
7983756
Update phone-book.js
konstantinator Oct 11, 2017
3f98f0d
Update phone-book.js
konstantinator Oct 11, 2017
0d3a77a
Update phone-book.js
konstantinator Oct 11, 2017
2324b6d
Update phone-book.js
konstantinator Oct 11, 2017
8c21926
Update phone-book.js
konstantinator Oct 11, 2017
3c0f653
Update phone-book.js
konstantinator Oct 11, 2017
e6f68e0
Update phone-book.js
konstantinator Oct 11, 2017
f18ca6f
Update phone-book.js
konstantinator Oct 11, 2017
f2ee88b
Update phone-book.js
konstantinator Oct 11, 2017
9756942
Update phone-book.js
konstantinator Oct 11, 2017
f775881
Update phone-book.js
konstantinator Oct 11, 2017
8efd406
Update phone-book.js
konstantinator Oct 11, 2017
1e0020b
Update phone-book.js
konstantinator Oct 11, 2017
d301083
Update phone-book.js
konstantinator Oct 11, 2017
2ba8695
Update phone-book.js
konstantinator Oct 11, 2017
00b17e5
Update phone-book.js
konstantinator Oct 11, 2017
aabd863
Update phone-book.js
konstantinator Oct 11, 2017
9cfde4c
Update phone-book.js
konstantinator Oct 11, 2017
938084c
Update phone-book.js
konstantinator Oct 11, 2017
c8b26cb
Update phone-book.js
konstantinator Oct 11, 2017
0e787d3
Update phone-book.js
konstantinator Oct 11, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
135 changes: 130 additions & 5 deletions phone-book.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,42 +9,151 @@ exports.isStar = true;
/**
* Телефонная книга
*/
var phoneBook;
var phoneBook = [];

/**
* Добавление записи в телефонную книгу
* @param {String} phone
* @param {String} name
* @param {String} email
* @returns {boolean}
*/
exports.addhel = function (phone, name) {
if (name === '' || phone.length !== 10) {
return true;
}

return false;
};

exports.addhelpen = function (phone, name, email, i) {
if (name === '' || (phoneBook[i].name === name || phoneBook[i].phone === phone ||
phoneBook[i].email === email)) {
return true;
}

return false;
};

exports.add = function (phone, name, email) {
phone = String(phone);
if (exports.addhel(phone, name)) {
return false;
}
if (phone === undefined) {
phone = '';
}
if (email === undefined) {
email = '';
}
for (var i = 0; i < phoneBook.length; i++) {
if (exports.addhelpen(phone, name, email, i)) {
return false;
}
}
phoneBook.push({
name: name,
phone: phone,
email: email
});

return true;
};

/**
* Обновление записи в телефонной книге
* @param {String} phone
* @param {String} name
* @param {String} email
* @returns {boolean}
*/
exports.update = function (phone, name, email) {
phone = String(phone);
if (phone.length !== 10 && phone.length !== 0) {
return false;
}
if (name === undefined) {
name = '';
}
if (email === undefined) {
email = '';
}
for (var i = 0; i < phoneBook.length; i++) {
if (phoneBook[i].phone === phone) {
phoneBook[i].name = name;
phoneBook[i].email = email;

return true;
}
}

return false;
};

/**
* Удаление записей по запросу из телефонной книги
* @param {String} query
* @returns{number}
*/
exports.findAndRemove = function (query) {
if (query === '') {
return undefined;
}
var schet = 0;
for (var i = phoneBook.length - 1; i >= 0; i--) {
if (exports.findhelp(phoneBook[i].name.indexOf(query),
phoneBook[i].phone.indexOf(query), phoneBook[i].email.indexOf(query))) {
phoneBook.splice(i, i + 1);
schet += 1;
}
}

return schet;
};

exports.findhelp = function (one, two, free) {
if (one !== -1 || two !== -1 || free !== -1) {
return true;
}

return false;
};

/**
* Поиск записей по запросу в телефонной книге
* @param {String} query
* @returns {array}
*/
exports.find = function (query) {
if (query === '') {
return undefined;
}
var exit = [];
for (var i = 0; i < phoneBook.length; i++) {
if (exports.findhelp(phoneBook[i].name.indexOf(query),
phoneBook[i].phone.indexOf(query), phoneBook[i].email.indexOf(query)) ||
query === '*') {
exit.push(exports.finder(i));
}
}
exit.sort();

return exit;
};

exports.finder = function (i) {
var tert;
if (phoneBook[i].email === '') {
tert = phoneBook[i].name + ', +7 (' + phoneBook[i].phone.slice(0, 3) + ') ' +
phoneBook[i].phone.slice(3, 6) + '-' + phoneBook[i].phone.slice(6, 8) + '-' +
phoneBook[i].phone.slice(8, 10);
} else {
tert = phoneBook[i].name + ', +7 (' + phoneBook[i].phone.slice(0, 3) + ') ' +
phoneBook[i].phone.slice(3, 6) + '-' + phoneBook[i].phone.slice(6, 8) + '-' +
phoneBook[i].phone.slice(8, 10) + ', ' + phoneBook[i].email;
}

return tert;
};

/**
Expand All @@ -54,9 +163,25 @@ exports.find = function (query) {
* @returns {Number} – количество добавленных и обновленных записей
*/
exports.importFromCsv = function (csv) {
// Парсим csv
// Добавляем в телефонную книгу
// Либо обновляем, если запись с таким телефоном уже существует
var schet = 0;
var name1;
var phone1;
var email1;
csv = csv.split('\n');
for (var i = 0; i < csv.length; i++) {
name1 = csv[i].slice(0, csv[i].indexOf(';'));
phone1 = csv[i].slice(csv[i].indexOf(';') + 1, csv[i].lastIndexOf(';'));
email1 = csv[i].slice(csv[i].lastIndexOf(';') + 1, csv[i].length);
if (exports.update(phone1, name1, email1)) {
schet += 1;
}
if (exports.add(phone1, name1, email1)) {
schet += 1;
}
}

return csv.split('\n').length;
return schet;
};
// Парсим csv
// Добавляем в телефонную книгу
// Либо обновляем, если запись с таким телефоном уже существует