diff --git a/HW2_2/HW2.js b/HW2_2/HW2.js new file mode 100644 index 0000000..f290fe8 --- /dev/null +++ b/HW2_2/HW2.js @@ -0,0 +1,151 @@ +'use strict'; + +/* +1. Дан код: +var a = 1, b = 1, c, d; +c = ++a; alert(c); // 2 Здесь инкремент увеличиавет переменную на 1. Префиксная форма. +d = b++; alert(d); // 1 Здесь постфиксная форма, поэтому ззаписывается 1. +c = (2+ ++a); alert(c); // 5 Здесь 2+ инкремент увеличивает ++2, т.е. 3 +d = (2+ b++); alert(d); // 4 Здесь опять постфиксная форма, т.е 2+ 2, но в перенменной будет 3 +alert(a); // 3 По итогу переменной префиксная форма дала 3 +alert(b); // 3 По итогу переменной постфиксаня форма тоже дала 3. +Почему код даёт именно такие результаты? +*/ + + +/* +2. Чему будет равен x в примере ниже? +var a = 2; +var x = 1 + (a *= 2); +x = 5 (1 + (2 * 2) +*/ + + + +/* +3. Объявить две целочисленные переменные a и b и задать им произвольные начальные значения. +Затем написать скрипт, который работает по следующему принципу: +1. если a и b положительные, вывести их разность;*/ + +let a = 4, b = 3; + + if (a >= 0 && b >= 0){ + console.log(a - b); + } + +/* +2. если а и b отрицательные, вывести их произведение;*/ + +let a = -4, b = -3; + + if (a <= 0 && b <= 0){ + console.log(a * b); + } + +/* +3. если а и b разных знаков, вывести их сумму; +ноль можно считать положительным числом. ### */ + +let a = 4, b = -3; + + if (a * b < 0){ + console.log(a + b); + } + +/* +4. Присвоить переменной а значение в промежутке [0..15]. +С помощью оператора switch организовать вывод чисел от a до 15. ### */ + +let a = 5; + switch (a){ + case 0: + document.write("0"); + case 1: + document.write("1"); + case 2: + document.write("2"); + case 3: + document.write("3"); + case 4: + document.write("4"); + case 5: + document.write("5"); + case 6: + document.write("6"); + case 7: + document.write("7"); + case 8: + document.write("8"); + case 9: + document.write("9"); + case 10: + document.write("10"); + case 11: + document.write("11"); + case 12: + document.write("12"); + case 13: + document.write("13"); + case 14: + document.write("14"); + case 15: + document.write("15"); + + } +/* +5. Реализовать основные 4 арифметические операции в виде функций с двумя параметрами. +Обязательно использовать оператор return. ###*/ + +function sumnumber (a, b) { + return a + b; +} + +function sumsub (a, b) { + return a - b; +} + +function summulti (a, b) { + return a * b; +} + +function sumdivision (a, b) { + return a / b; +} + +/* +6. Реализовать функцию с тремя параметрами: function mathOperation(arg1, arg2, operation), +где arg1, arg2 – значения аргументов, operation – строка с названием операции. +В зависимости от переданного значения операции выполнить одну из арифметических операций (использовать функции из пункта 3) и +вернуть полученное значение (использовать switch). ### */ + +function mathOperation(arg1, arg2, operation){ + switch (operation){ + case "+": + return sumnumber(arg1, arg2); + case "-": + return sumsub (arg1, arg2); + case "*": + return summulti(arg1, arg2); + case "/": + return sumdivision(arg1, arg2); + } +} + +console.log(mathOperation(4,8,"+")); +console.log(mathOperation(4,8,"-")); +console.log(mathOperation(4,8,"*")); +console.log(mathOperation(4,8,"/")); + + +/* +7. *Сравнить null и 0. Попробуйте объяснить результат. ### + +null - значение не известно +0 - число +null > 0 и null == 0 выдаст false. +Если сравнить null >= 0 ты выдаст true.*/ + +/* +8. *С помощью рекурсии организовать функцию возведения числа в степень. Формат: function power(val, pow), +где val – заданное число, pow – степень.*/ + diff --git a/HW2_2/index.html b/HW2_2/index.html new file mode 100644 index 0000000..7db6400 --- /dev/null +++ b/HW2_2/index.html @@ -0,0 +1,11 @@ + + + + + Document + + + + + \ No newline at end of file diff --git a/HW3/HW3.js b/HW3/HW3.js new file mode 100644 index 0000000..7277cfc --- /dev/null +++ b/HW3/HW3.js @@ -0,0 +1,128 @@ +'use strict'; + +/* +1.2 С помощью цикла for написать алгоритм для вывода чисел от 0 до 10 включительно, чтобы результат выглядел так: +0 – это ноль +1 – нечетное число +2 – четное число +3 – нечетное число +… +10 – четное число*/ + +for (let a = 0; a <= 10; a++) { + if (a == 0) { + console.log(a + " - Это ноль"); + } else if ( a % 2 == 0) { + console.log(a + " - это четное число") + } else { + console.log(a + " - это нечетное число") + } +} + + +2. /* Выведите в консоль значения, указанные рядом с комментариями: */ + +const post = { + author: "John", //вывести этот текст + postId: 23, + comments: [ + { + userId: 10, + userName: "Alex", + text: "lorem ipsum", + rating: { + likes: 10, + dislikes: 2 //вывести это число + } + }, + { + userId: 5, //вывести это число + userName: "Jane", + text: "lorem ipsum 2", //вывести этот текст + rating: { + likes: 3, + dislikes: 1 + } + }, + ] +} + +console.log(post.author); +console.log(post.comments[0].rating.dislikes); +console.log(post.comments[1].userId); +console.log(post.comments[1].text); + +/* +3. Перед вами находится массив с продуктами, сегодня распродажа и вам нужно на каждый товар применить скидку +15%, можете использовать метод forEach*/ + +const products = [ + { + id: 3, + price: 200, + }, + { + id: 4, + price: 900, + }, + { + id: 1, + price: 1000, + }, +]; + +products.forEach(item => { + item.price = item.price - item.price * 0.15 +}); + +/* +4. Перед вами находится массив с продуктами в интернет-магазине. Вам нужно: +1 Получить все товары, у которых есть фотографии, можете использовать метод filter +2 Отсортируйте товары по цене (от низкой цены к высокой), можете использовать метод sort*/ + +const products = [ + { + id: 3, + price: 127, + photos: [ + "1.jpg", + "2.jpg", + ] + }, + { + id: 5, + price: 499, + photos: [] + }, + { + id: 10, + price: 26, + photos: [ + "3.jpg" + ] + }, + { + id: 8, + price: 78, + }, +]; + +/* Первое задание не сообразил как сделать*/ +/* Ниже по второму заданию*/ + +const sort = products.sort(function(item1, item2){ + return item1.price - item2.price; + }) + +/* +5. Нарисовать горку с помощью console.log (используя цикл for), как показано на рисунке, +только у вашей горки должно быть 20 рядов, а не 5: +x +xx +xxx +xxxx +xxxxx/*/ + +for (let x = "x"; x.length <= 20; x += "x"){ + console.log(x); +} diff --git a/HW3/index.html b/HW3/index.html new file mode 100644 index 0000000..6ea5a15 --- /dev/null +++ b/HW3/index.html @@ -0,0 +1,11 @@ + + + + + Document + + + + + \ No newline at end of file diff --git a/HW4/HW4.js b/HW4/HW4.js new file mode 100644 index 0000000..62496dd --- /dev/null +++ b/HW4/HW4.js @@ -0,0 +1,80 @@ +'use strict'; + +/*1 +Написать функцию, преобразующую число в объект. Передавая на вход число в диапазоне [0, 999], +мы должны получить на выходе объект, в котором в соответствующих свойствах описаны разряды числа: +- единицы (в свойстве units) +- десятки (в свойстве tens) +- сотни (в свойстве hundereds) +Например, для числа 45 мы должны получить следующий объект: +{ +units: 5, //это единицы +tens: 4, //это десятки +hundreds: 0, //это сотни +} +Если число было передано вне [0, 999] диапазона, не целое число или вообще не число, +необходимо выдать соответствующее сообщение с помощью console.log и вернуть пустой объект.*/ + +function NumberObject(num) { + if (!Number.isInteger(num) || num < 0 || num > 999){ + console.log("Диапазон ЧИСЕЛ должен быть [0, 999]."); + return {}; + } + return { + units: num % 10, + hundreds: Math.floor(num / 100), + tens: Math.floor(num / 10) % 10, + } +} + +console.log(NumberObject(444)); + + +/*1.1 +Сделайте в стиле es5, а затем в стиле es6 (по аналогии из урока), конструктор Product, который принимает +параметры name и price, сохраните их как свойства объекта. Также объекты типа Product должны иметь метод +make25PercentDiscount, который будет уменьшать цену в объекте на 25%.*/ + + +/*es5*/ +function Product(name, price) { + this.name = name; + this.price = price; +} + +Product.prototype.make25PercentDiscount = function () { + this.price = this.price - (this.price * 25 / 100) + }; + +const product1 = new Product("Продукт", 230) +product1.make25PercentDiscount(); + +console.log(product1); + +/*es6*/ + +class Product { + constructor(name, price) { + this.name = name; + this.price = price; + } + + make25PercentDiscount() { + this.price = this.price - (this.price * 25 / 100) + } +} + + const product1 = new Product("Продукт", 230) + product1.make25PercentDiscount(); + + console.log(product1); + +/*1.2 +Сделайте в стиле es5, а затем в стиле es6 (по аналогии из урока), +а) конструктор Post, который принимает параметры author, text, date и сохраняет их как свойства объекта. Объекты +типа Post должны иметь метод edit, который будет принимать текст и записывать его в свойство text объекта. +б) конструктор AttachedPost, который принимает параметры author, text, date. Проинициализируйте эти свойства с +помощью конструктора Post, чтобы не дублировать код. Также в конструкторе AttachedPost должно создаваться +свойство highlighted со значением false. Унаследуйте в объектах типа AttachedPost методы из Post. +Объекты типа AttachedPost должны иметь метод makeTextHighlighted, который будет назначать свойству +highlighted значение true.*/ \ No newline at end of file diff --git a/HW4/index.html b/HW4/index.html new file mode 100644 index 0000000..b3ffd5e --- /dev/null +++ b/HW4/index.html @@ -0,0 +1,11 @@ + + + + + Document + + + + + \ No newline at end of file