diff --git a/js-core/homeworks/telephone/index.html b/js-core/homeworks/telephone/index.html new file mode 100644 index 0000000..6e418d2 --- /dev/null +++ b/js-core/homeworks/telephone/index.html @@ -0,0 +1,11 @@ + + + + + Home work 1 + + + + + + \ No newline at end of file diff --git a/js-core/homeworks/telephone/src/main.js b/js-core/homeworks/telephone/src/main.js new file mode 100644 index 0000000..9815ae4 --- /dev/null +++ b/js-core/homeworks/telephone/src/main.js @@ -0,0 +1,126 @@ +/*Приложение телефонный справочник + +Создайте функцию конструктор. +У данной функции должны быть методы: + +1+. Преобразование телефонного номера из формата 0993378130 в (099) 33-78-130 +2+. Проверка, что телефонный номер содержит только числа +3+. Добавление пользователей в справочник +4+. Удаление пользователя по имени, фамилии +5+. Поиск пользователей по имени - отображает всех пользователей с одинаковым именем +6+. Изменение имени, фамилии, телефонного номера у выбраного пользователя ( здесь должно быть реализовано через this ) +7+. Сортировка пользователей по номеру телефона, фамилии, имени и тд, по любому из свойств пользователя +8. Фильтр по указанному свойству + +*/ +const myApp = new PhoneApp(); + +function PhoneApp() { + this.dataBase = [ + { id: 1, name: 'Vasya', phone: '1234' }, + { id: 2, name: 'Vasya2', phone: '12441' }, + { id: 5, name: 'Vasya5', phone: '12444' }, + { id: 6, name: 'Vasya6', phone: '12444' }, + { id: 7, name: 'Vasya2', phone: '12442' }, + { id: 8, name: 'Vasya2', phone: '12443' }, + { id: 9, name: 'Vasya2', phone: '12455' } + ] +} +PhoneApp.prototype.phoneNum = function(phoneNum) { + if (this.testOnNum(phoneNum) && this.ten(phoneNum)) { + let str = phoneNum; + return `(${str.substring(0,3)}) ${str.substring(3,5)}-${str.substring(5,7)}-${str.substring(7,10)}`; + } else { + return `неправильно введен номер`; + } +} +PhoneApp.prototype.testOnNum = function(phoneNum) { + let arr = phoneNum.split(''); + let isNum = function(number) { + return !isNaN(number); + } + return arr.every(isNum); +} +PhoneApp.prototype.ten = function(phoneNum) { + return phoneNum.length == 10 || `введите десятизначный номер`; +} +PhoneApp.prototype.addUser = function(name, phone) { + let lastId = this.dataBase[this.dataBase.length - 1].id; + let obj = {}; + obj.id = lastId + 1; + obj.name = name; + obj.phone = this.phoneNum(phone); + this.dataBase.push(obj); +} +PhoneApp.prototype.deleteUser = function(name) { + this.dataBase.forEach((value, i) => { + if (value.name == name) { + this.dataBase.splice(i, 1); + } + }); +} +PhoneApp.prototype.search = function(name) { + let arr = []; + this.dataBase.forEach((value, i) => { + if (value.name == name) { + arr.push(value); + } + }); + return arr; +} +PhoneApp.prototype.change = function(name, newName, newPhone) { + if (newName && newPhone) { + this.changePhone(name, newPhone); + this.changeName(name, newName); + } +} +PhoneApp.prototype.changeName = function(name, newName) { + this.dataBase.forEach((value, i) => { + if (value.name == name) { + this.dataBase[i].name = newName; + } + }); +} +PhoneApp.prototype.changePhone = function(name, newPhone) { + this.dataBase.forEach((value, i) => { + if (value.name == name) { + this.dataBase[i].phone = this.phoneNum(newPhone); + } + }); +} +PhoneApp.prototype.sort = function(param) { + //let tempArr = this.dataBase + return this.dataBase.sort((a, b) => { + return a[param] > b[param]; + }); +} +PhoneApp.prototype.filter = function(str) { + let dataBaseFilter = []; + this.dataBase.forEach((value, i) => { + for (let key in value) { + for (let j = 0; j <= value[key].length - str.length; j++) { + if (value[key].substr(j, str.length) == str) { + dataBaseFilter.push(value); + return; + } + } + } + }); + return dataBaseFilter; +} + +console.log(myApp.phoneNum('1234567890')); +console.log(myApp.testOnNum('1234567890')); +myApp.ten('1234567890'); +myApp.addUser('alex', '0671233445'); +myApp.addUser('alex1', '5554618456'); +//console.log(myApp.deleteUser('Vasya2')); +//console.log(myApp.deleteUser('alex')); +console.log(myApp.search('Vasya2')); +myApp.changeName('alex', 'Alexey'); +myApp.change('Vasya6', 'Pedro', '3333333333'); +myApp.changePhone('Pedro', '2222222222'); +console.log(`dataBase `, myApp.dataBase); +console.log(`dataBase `, myApp.sort('name')); +//console.log(`dataBase `, myApp.sort('id')); +console.log(`filter `, myApp.filter('ex')); \ No newline at end of file