|
@@ -0,0 +1,323 @@
|
|
|
+// 1. Temperature
|
|
|
+// Оформите Temperature как функцию, в которую параметром передается температура в одной системе, а возвращается в
|
|
|
+// другой. Никаких prompt и console.log в коде быть не должно, если вы хотите в дальнейшем пользоваться этой функцией
|
|
|
+// где угодно в коде удобно. Нужен ли блок кода в функции для решения этой задачи?
|
|
|
+/*{
|
|
|
+ const temp = a => a * 1.8 + 32;
|
|
|
+}*/
|
|
|
+
|
|
|
+//2. RGB
|
|
|
+// Оформите Number: RGB как функцию, в которую параметрами передаются три числа (r,g,b) => . Функция должна возвращать
|
|
|
+// строку в нотации #RRGGBB. Используя условия или тернарный оператор добейтесь что бы в результате всегда было
|
|
|
+// 7 символов, даже когда значение цвета меньше 15ти. Нужен ли блок кода этой функции?
|
|
|
+/*{
|
|
|
+ const rgbToHex = (r,g,b) => {
|
|
|
+ const hex = '#' +
|
|
|
+ (r > 15 ? r.toString(16) : "0" + r.toString(16)) +
|
|
|
+ (g > 15 ? g.toString(16) : "0" + g.toString(16)) +
|
|
|
+ (b > 15 ? b.toString(16) : "0" + b.toString(16));
|
|
|
+ return hex
|
|
|
+ }
|
|
|
+ console.log(rgbToHex(15,10,5))
|
|
|
+}*/
|
|
|
+
|
|
|
+//3. Flats
|
|
|
+// Оформите Number: flats как функцию. Продумайте достаточное количество параметров для решения задачи. Функция должна
|
|
|
+// возвращать объект вида {entrance, floor}, где entrance - номер падика, floor - номер этажа на котором находится
|
|
|
+// квартира.
|
|
|
+/*{
|
|
|
+ const result = (porch, area, floor, flat) => {
|
|
|
+ const total = porch * floor * area; // Общее количество квартир в доме
|
|
|
+ const totalPorch = total / porch; // Количество квартир в одном подьезде
|
|
|
+ const numPorch = Math.floor(1 + (flat - 1) / totalPorch) ;
|
|
|
+ const numFloor = Math.floor(1 + ((flat - 1) % totalPorch) / area);// Номер подьезда
|
|
|
+
|
|
|
+ console.log(flatResult);
|
|
|
+ return flatResult = {
|
|
|
+ numPorch,
|
|
|
+ numFloor
|
|
|
+ }
|
|
|
+ }
|
|
|
+ result(4,4,5,30);
|
|
|
+} */
|
|
|
+
|
|
|
+// 4. Credentials
|
|
|
+// Оформите задание String: credentials как функцию без параметров. Используйте функцию capitalize из домашнего
|
|
|
+// задания по массивам. Функция должна содержать вызовы prompt и возвращать объект вида {name, surname, fatherName,
|
|
|
+// fullName}
|
|
|
+/*{
|
|
|
+ function capitalize() {
|
|
|
+ const name = prompt('Введите имя');
|
|
|
+ const fatherName = prompt('Введите отчество')
|
|
|
+ const surname = prompt('Введите фамилию')
|
|
|
+ let fullName = name + " " + fatherName + " " + surname;
|
|
|
+ const arr = fullName.split(' ');
|
|
|
+ const newArr = [];
|
|
|
+ arr.forEach((item) => {
|
|
|
+ const word = item[0].toUpperCase() + item.slice(1);
|
|
|
+ newArr.push(word);
|
|
|
+ })
|
|
|
+ const obj = Object.assign({}, newArr);
|
|
|
+ console.log(obj)
|
|
|
+ return obj;
|
|
|
+ }
|
|
|
+ capitalize()
|
|
|
+} */
|
|
|
+
|
|
|
+//5. New line
|
|
|
+// Оформите задание String: new line как функцию с параметром-строкой. Функция должна возвращать строку с настоящими
|
|
|
+// переносами.
|
|
|
+/*{
|
|
|
+ const string = (str = prompt('введите несколько строк разделенных \n')) => {
|
|
|
+ return str.split('\\n').join('\n');
|
|
|
+ }
|
|
|
+ let result = string()
|
|
|
+ alert(result);
|
|
|
+}*/
|
|
|
+
|
|
|
+//6. Prompt OR
|
|
|
+// Оформите задание Prompt: OR как функцию, которая принимает строку для prompt и значение по умолчанию. Функция должна
|
|
|
+// возвращать введенный текст или значение по умолчанию в случае отказа пользователя вводить что-либо. Используйте
|
|
|
+// функцию без блока кода (функцию в одно выражение)
|
|
|
+/*
|
|
|
+{
|
|
|
+ const promptOr = (promptStr, promptDefault) => prompt (promptStr) || promptDefault
|
|
|
+ console.log( promptOr('Введите что-то', 'ignore') )
|
|
|
+}
|
|
|
+}*/
|
|
|
+
|
|
|
+//7. Login And Password
|
|
|
+// Оформите задание Login And Password как функцию, которая принимает два параметра - правильный логин и пароль и
|
|
|
+// возвращает true если логин и пароль введенные пользователями верны, или false если пользователь не смог.
|
|
|
+/*
|
|
|
+{
|
|
|
+ const sign = (userName = 'admin', pass ='qwerty' ) => {
|
|
|
+ if (userName === 'admin') {
|
|
|
+ if (pass === 'qwerty') {
|
|
|
+ alert('Успешный вход');
|
|
|
+ } else if (pass === '' || pass == null) {
|
|
|
+ alert('Пароль не введен');
|
|
|
+ } else {
|
|
|
+ alert('Неправильный пароль');
|
|
|
+ }
|
|
|
+ } else if (userName === '' || userName == null) {
|
|
|
+ alert('Логин не введен');
|
|
|
+ } else {
|
|
|
+ alert("Неправильный логин");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sign('admin', 'qwerty')
|
|
|
+}*/
|
|
|
+
|
|
|
+// 8. For Table
|
|
|
+// Оформите задание For Multiply Table как функцию, которая принимает любой массив с массивами, а возвращает строку
|
|
|
+// HTML с тэгом <table> и всякими tr и td.
|
|
|
+/*{
|
|
|
+ const arr = [
|
|
|
+ [0,0,0,0,0,0],
|
|
|
+ [0,1,2,3,4,5],
|
|
|
+ [0,2,4,6,8,10],
|
|
|
+ [0,3,6,9,12,15],
|
|
|
+ [0,4,8,12,16,20],
|
|
|
+ [0,5,10,15,20,25]
|
|
|
+ ];
|
|
|
+
|
|
|
+ const newTable = arr => {
|
|
|
+ let str = "<table>"
|
|
|
+ let i = 1
|
|
|
+ for (let tr of arr){
|
|
|
+ if (i++ % 2 === 0){
|
|
|
+ str += '<tr>'
|
|
|
+ }else{
|
|
|
+ str += "<tr>"
|
|
|
+ }
|
|
|
+ for (let td of tr){
|
|
|
+ str += "<td>" + td + "</td>"
|
|
|
+ }
|
|
|
+ str += "</tr>"
|
|
|
+ }
|
|
|
+ str += "</table>"
|
|
|
+ return (str)
|
|
|
+ }
|
|
|
+ newTable(arr)
|
|
|
+} */
|
|
|
+
|
|
|
+//9. Filter Lexics
|
|
|
+// Оформите задание Filter Lexics как функцию, принимающую любую строку для проверки и массив некорректных слов
|
|
|
+// (['бляха', 'муха', "пляха", "шабля"], например). Функция должна возвращать строку без этих некорректных слов.
|
|
|
+/*{
|
|
|
+ let arrBadWords = ['бляха', 'муха', "пляха", "шабля"];
|
|
|
+ let str = prompt("Введите текст");
|
|
|
+
|
|
|
+ let filterLexics = (str, arrBadWords) => {
|
|
|
+ let arr = str.split(" ");
|
|
|
+
|
|
|
+ const f = (word) => {
|
|
|
+ for (let badWords of arrBadWords) {
|
|
|
+ if (word === badWords) {
|
|
|
+ return false
|
|
|
+ } else {
|
|
|
+ return true }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let arrNew = arr.filter(f);
|
|
|
+ return arrNew.join(' ')
|
|
|
+ }
|
|
|
+console.log(filterLexics(str, arrBadWords))
|
|
|
+} */
|
|
|
+
|
|
|
+// 10. Currency Table +-
|
|
|
+// Оформите задание Currency Table как функцию, без параметров, которая складывает полученные данные во внутренний
|
|
|
+// двумерный массив, после чего отображает его используя функцию из задания For Table
|
|
|
+{
|
|
|
+ fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
|
|
|
+ .then(data => {
|
|
|
+
|
|
|
+ const fullArr = Object.entries(data.rates);
|
|
|
+ console.log(fullArr )
|
|
|
+
|
|
|
+ const newTable = () => {
|
|
|
+ let str = "<table>"
|
|
|
+ let i = 1
|
|
|
+ for (let tr of fullArr){
|
|
|
+ if (i++ % 2 === 0){
|
|
|
+ str += '<tr style="background-color: lightgray;">'
|
|
|
+ }else{
|
|
|
+ str += "<tr>"
|
|
|
+ }
|
|
|
+ for (let td of tr){
|
|
|
+ str += "<td>" + td + "</td>"
|
|
|
+ }
|
|
|
+ str += "</tr>"
|
|
|
+ }
|
|
|
+ str += "</table>"
|
|
|
+ document.write(str)
|
|
|
+ }
|
|
|
+ newTable()
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+//11. Form +
|
|
|
+// Оформите задание Form как функцию, которая принимает любой объект как параметр и создает форму на экране.
|
|
|
+/*{
|
|
|
+ const car = {
|
|
|
+ "Name":"chevrolet chevelle malibu",
|
|
|
+ "Cylinders":8,
|
|
|
+ "Displacement":307,
|
|
|
+ "Horsepower":130,
|
|
|
+ "Weight_in_lbs":3504,
|
|
|
+ "Origin":"USA",
|
|
|
+ "in_production": false }
|
|
|
+
|
|
|
+ const createForm = car => {
|
|
|
+ for (const [key, values] of Object.entries(car)) {
|
|
|
+ str = "<form>";
|
|
|
+ if (typeof values === 'string') {
|
|
|
+ str += "<label>" + key + "<input type='text' value='" + values + "'/>" + "</label>";
|
|
|
+ } else if (typeof values === 'number') {
|
|
|
+ str += "<label>" + key + "<input type='number' value='" + values + "'/>" + "</label>";
|
|
|
+ } else if (typeof values === 'boolean') {
|
|
|
+ str += "<label>" + key + "<input type='checkbox' value='" + values + "'/>" + "</label>";
|
|
|
+ }
|
|
|
+ str += "</form>"
|
|
|
+ document.write(str);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ createForm(car)
|
|
|
+}*/
|
|
|
+
|
|
|
+//12. Array of objects sort +
|
|
|
+// Сделайте обобщенную функцию сортировки массива с объектами
|
|
|
+// Функция позволяет отсортировать любой набор данных по имени поля (второй параметр). Третьим параметром идет
|
|
|
+// необязательный Boolean, который в случае true делает сортировку по возрастанию, в случае false - по убыванию.
|
|
|
+// По умолчанию (без третьего параметра) происходит сортировка по возрастанию.
|
|
|
+// Если параметр не задан - внутри функции он равен undefined
|
|
|
+/*{
|
|
|
+ let persons = [
|
|
|
+ {name: "Иван", age: 17},
|
|
|
+ {name: "Мария", age: 35},
|
|
|
+ {name: "Алексей", age: 73},
|
|
|
+ {name: "Яков", age: 12},
|
|
|
+ ]
|
|
|
+
|
|
|
+ function sort(arr, key,boolean){
|
|
|
+ arr.sort(mySort)
|
|
|
+
|
|
|
+ function mySort(a, b){
|
|
|
+ return (boolean) ? (a[key] > b[key]) : (b[key] > a[key]);
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+ }
|
|
|
+
|
|
|
+ console.log(sort(persons, "name", false));
|
|
|
+} */
|
|
|
+
|
|
|
+
|
|
|
+// 14. Divide
|
|
|
+// Реализуйте задание Number: divide в HTML:
|
|
|
+/*{
|
|
|
+ <input type='number' id="firstNumber" />
|
|
|
+ <input type='number' id="secondNumber" />
|
|
|
+
|
|
|
+ <div>
|
|
|
+ <p>Первое число поместится во втором целых <span id="divisionResult">___ </span> раз </p>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ <script>
|
|
|
+ const calcResult = () => {
|
|
|
+ console.log(firstNumber.value, secondNumber.value, divisionResult.innerHTML)
|
|
|
+ divisionResult.innerHTML = Math.floor(Math.abs(firstNumber.value/secondNumber.value ))
|
|
|
+ }
|
|
|
+ firstNumber.oninput = secondNumber.oninput = calcResult
|
|
|
+} */
|
|
|
+
|
|
|
+
|
|
|
+// Воспользуйтесь следующей информацией:
|
|
|
+// все id в HTML становятся глобальными переменными (если это имя не занято, id="prompt" не сработает, функция
|
|
|
+// prompt будет работать и далее);
|
|
|
+// Любой DOM-элемент (то, что в HTML называется тэгом или парой тэгов) является объектом;
|
|
|
+// Для доступа к атрибуту value тэгов input используется свойство value (например, firstNumber.value)
|
|
|
+// Для доступа к вложенному тексту парных тэгов используется свойство innerHTML (например, divisionResult.innerHTML)
|
|
|
+//
|
|
|
+// Заготовка выше обеспечивает запуск функции calcResult по любому изменению текста в полях ввода. Напишите в ней
|
|
|
+// деление значений из полей ввода и выведите резуль тат в div.
|
|
|
+
|
|
|
+// 15. Calc Func
|
|
|
+// Вспомните первое ДЗ по Javascript, в котором вы делали всякие расчеты используя код на Javascript. Оформите это как
|
|
|
+// функцию:
|
|
|
+//
|
|
|
+// найдите все входящие данные, сделайте из них параметры
|
|
|
+// найдите переменную с результатом расчетов и сделайте так, что бы ваша функция возвращала этот результат.
|
|
|
+// Если результатов несколько, создайте объект из этих результатов и верните его.
|
|
|
+/*
|
|
|
+{
|
|
|
+ const amountCoffee = (coffeeCup = +prompt('Введите количество чашек кофе, которые Вы покупаете за день'),
|
|
|
+ price = +prompt('Введите цену одной чашки кофе (грн.)')) => {
|
|
|
+ let dailyConst = coffeeCup * price;
|
|
|
+ console.log(dailyConst)
|
|
|
+ }
|
|
|
+ amountCoffee()
|
|
|
+} */
|
|
|
+
|
|
|
+
|
|
|
+//16. Calc Live +
|
|
|
+// Используя пример из задания Divide и функцию из Calc Func сделайте несколько полей ввода в HTML, меняя которые вы
|
|
|
+// будете получать результат калькуляции в каком-то div.
|
|
|
+/*
|
|
|
+ <p> Введите количество чашек кофе, которые Вы покупаете за день </p>
|
|
|
+ <input type='number' id="coffeeCup" />
|
|
|
+ <p> Введите стоимость одной чашки кофе </p>
|
|
|
+ <input type='number' id="price" />
|
|
|
+ <div>
|
|
|
+ <p> Расходы на кофе за день <span id="dailyExpenses">___ </span> грн </p>
|
|
|
+ </div>
|
|
|
+ <script>
|
|
|
+
|
|
|
+ const calcResult = () => {
|
|
|
+ dailyExpenses.innerHTML= coffeeCup.value * price.value;
|
|
|
+ }
|
|
|
+
|
|
|
+ coffeeCup.oninput = price.oninput = calcResult
|
|
|
+ </script> -->
|
|
|
+} */
|