123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370 |
- // ДЗ: Функции
- // задание 1 Temperature
- {
- function celsiusToFahrenheit(celsius) {
- return (9 / 5) * celsius + 32;
- }
- }
- {
- function fahrenheitToCelsius(fahrenheit) {
- return (5 / 9) * (fahrenheit - 32);
- }
- }
- {
- // Чтобы вызвать функцию, нужно написать ее имя, а затем указать аргументы в скобках. Например:
- let fahrenheit = celsiusToFahrenheit(30);
- console.log(`30°C = ${fahrenheit}°F`);
- let celsius = fahrenheitToCelsius(86);
- console.log(`86°F = ${celsius}°C`);
- }
- // задание 2 RGB
- {
- function createCSSColor(r, g, b) {
- r = r.toString(16);
- g = g.toString(16);
- b = b.toString(16);
- r = r.length === 1 ? '0' + r : r;
- g = g.length === 1 ? '0' + g : g;
- b = b.length === 1 ? '0' + b : b;
- return '#' + r + g + b;
- }
- }
- // блок кода функции является обязательным элементом функции, и его нужно указывать в любом случае
- // задание 3 Flats
- {
- function findApartment(floors, apartmentsPerFloor, apartmentNumber) {
- const countFlatsAtEntrance = floors * apartmentsPerFloor;
- const entrance = Math.ceil(apartmentNumber / countFlatsAtEntrance);
- const floor = Math.ceil(
- (countFlatsAtEntrance - (countFlatsAtEntrance * entrance - apartmentNumber)) /
- apartmentsPerFloor,
- );
- return { entrance, floor };
- }
- }
- // задание 4 Credentials
- {
- function getFullName() {
- // Функция, которая преобразует строку в формат "Слово с большой буквы"
- function capitalize(str) {
- return str[0].toUpperCase() + str.slice(1).toLowerCase();
- }
- const name = capitalize(prompt('Введите ваше имя').trim());
- const surname = capitalize(prompt('Введите вашу фамилию').trim());
- const fatherName = capitalize(prompt('Введите ваше отчество').trim());
- const fullName = `${surname} ${name} ${fatherName}`;
- return { name, surname, fatherName, fullName };
- }
- const result = getFullName();
- console.log(result); // {name: "Имя", surname: "Фамилия", fatherName: "Отчество", fullName: "Фамилия Имя Отчество"}
- }
- // задание 5 New line
- {
- function getMultiLineString(inputString) {
- return inputString.split('\\n').join('\n');
- }
- const result = getMultiLineString('Первая строка\\nВторая строка\\nТретья строка');
- console.log(result); // "Первая строка\nВторая строка\nТретья строка"
- }
- // задание 6 Prompt OR
- {
- function getUserInput(promptString, defaultValue) {
- return prompt(promptString) || defaultValue;
- }
- }
- {
- // Пример использования:
- let year = getInput('укажите ваш возраст', '22');
- const date = 2022 - year;
- alert(date);
- }
- // задание 7 Login And Password
- {
- function checkCredentials(correctLogin, correctPassword) {
- const userLogin = prompt('Login');
- if (userLogin !== correctLogin) {
- alert('Wrong login');
- return false;
- }
- const userPassword = prompt('Password');
- if (userPassword !== correctPassword) {
- alert('Wrong password');
- return false;
- }
- alert('congratz');
- return true;
- }
- }
- // задание 8 For Table
- {
- function createTable(data) {
- let html = '<table>';
- for (let i = 0; i < data.length; i++) {
- const row = data[i];
- html += `<tr style="background-color: ${i % 2 ? '#eee' : '#fff'}">`;
- for (const cell of row) {
- html += `<td>${cell}</td>`;
- }
- html += '</tr>';
- }
- html += '</table>';
- return html;
- }
- }
- // задание 9 Filter Lexics
- {
- function filterString(str, bannedWords) {
- const words = str.split(' '); // разбиваем строку на слова
- const filteredWords = words.filter((word) => !bannedWords.includes(word)); // фильтруем слова
- return filteredWords.join(' '); // собираем массив в строку
- }
- console.log(filterString('I want to eat ice cream', ['want', 'to']));
- }
- // задание 10 Currency Table
- {
- function fetchAndCreateTable() {
- // Запрашиваем текущие курсы валют с сервера
- fetch('https://open.er-api.com/v6/latest/USD')
- .then((res) => res.json())
- .then((data) => {
- // Получаем объект с курсами валют
- const rates = data.rates;
- // Создаем массив для хранения кросскурсов
- const crossRates = [];
- // Добавляем заголовки таблицы в массив
- crossRates.push(['', ...Object.keys(rates)]);
- // Добавляем остальные строки таблицы в массив
- for (const currency1 in rates) {
- const row = [currency1];
- for (const currency2 in rates) {
- // Рассчитываем кросскурс между валютами
- const crossRate = rates[currency1] / rates[currency2];
- row.push(crossRate);
- }
- crossRates.push(row);
- }
- // Генерируем HTML-код таблицы
- const html = createTable(crossRates);
- // Вставляем HTML-код таблицы в документ
- document.getElementById('currencyTable').innerHTML = html;
- });
- }
- }
- // задание 11 Form
- {
- function createFormFromObject(obj) {
- // создаем элемент формы
- let form = document.createElement('form');
- // итерируемся по ключам объекта
- for (const key in obj) {
- if (obj.hasOwnProperty(key)) {
- // получаем значение свойства
- const value = obj[key];
- // определяем тип инпута в зависимости от типа значения свойства
- let inputType;
- switch (typeof value) {
- case 'string':
- inputType = 'text';
- break;
- case 'number':
- inputType = 'number';
- break;
- case 'boolean':
- inputType = 'checkbox';
- break;
- default:
- inputType = 'text';
- }
- // создаем элементы label и input
- let label = document.createElement('label');
- let input = document.createElement('input');
- // устанавливаем тип инпута
- input.type = inputType;
- // устанавливаем значение инпута
- input.value = value;
- // добавляем текстовую надпись к элементу label
- label.appendChild(document.createTextNode(`${key}: `));
- // добавляем элемент input к элементу label
- label.appendChild(input);
- // добавляем элемент label к элементу form
- form.appendChild(label);
- }
- }
- // возвращаем элемент form
- return form;
- }
- }
- // задание 12 Array of objects sort
- {
- function sort(arr, field, ascending = true) {
- arr.sort((a, b) => {
- if (ascending) {
- return a[field] > b[field] ? 1 : -1;
- } else {
- return a[field] < b[field] ? 1 : -1;
- }
- });
- }
- // пример использования функции
- var persons = [
- { name: 'Иван', age: 17 },
- { name: 'Мария', age: 35 },
- { name: 'Алексей', age: 73 },
- { name: 'Яков', age: 12 },
- ];
- // сортирует по возрасту по возрастанию
- sort(persons, 'age');
- console.log(persons); // [{name: "Яков", age: 12}, {name: "Иван", age: 17}, {name: "Мария", age: 35}, {name: "Алексей", age: 73}]
- // сортирует по имени по убыванию
- sort(persons, 'name', false);
- console.log(persons); // [{name: "Мария", age: 35}, {name: "Иван", age: 17}, {name: "Алексей", age: 73}, {name: "Яков", age: 12}]
- }
- // задание 13 Table
- {
- function createTable(array, sortField, sortOrder) {
- // Копируем исходный массив
- const data = [...array];
- // Сортируем с помощью функции из предыдущего задания
- sort(data, sortField, sortOrder);
- // Первый проход - поиск колонок
- const columns = [];
- data.forEach((person) => {
- for (const key in person) {
- if (!columns.includes(key)) {
- columns.push(key);
- }
- }
- });
- // Начинаем создание таблицы
- let tableHTML = '<table><tr>';
- // Формируем строку с заголовками
- columns.forEach((column) => {
- tableHTML += `<th>${column}</th>`;
- });
- tableHTML += '</tr>';
- // Второй проход - отображение таблицы
- data.forEach((person) => {
- tableHTML += '<tr>';
- columns.forEach((column) => {
- tableHTML += `<td>${person[column]}</td>`;
- });
- tableHTML += '</tr>';
- });
- tableHTML += '</table>';
- console.log(tableHTML);
- }
- }
- // задание 14 Divide
- {
- const calcResult = () => {
- const firstNumber = document.getElementById('firstNumber').value;
- const secondNumber = document.getElementById('secondNumber').value;
- const divisionResult = document.getElementById('divisionResult');
- divisionResult.innerHTML = Math.floor(firstNumber / secondNumber);
- };
- document.getElementById('firstNumber').oninput = calcResult;
- document.getElementById('secondNumber').oninput = calcResult;
- }
- // задание 15 Calc Func
- {
- function calculateUtilitiesCost(
- utilitiesMonthOne,
- utilitiesMonthTwo,
- utilitiesMonthThree,
- utilitiesMonthFour,
- utilitiesMonthFive,
- utilitiesMonthSix,
- ) {
- let result =
- +utilitiesMonthOne +
- +utilitiesMonthTwo +
- +utilitiesMonthThree +
- +utilitiesMonthFour +
- +utilitiesMonthFive +
- +utilitiesMonthSix;
- return result;
- }
- let utilitiesCost = calculateUtilitiesCost(50, 60, 70, 80, 90, 100);
- console.log(utilitiesCost + ' грн');
- }
- // задание 16 Calc Live
- {
- function calculateUtilitiesCost(
- utilitiesMonthOne,
- utilitiesMonthTwo,
- utilitiesMonthThree,
- utilitiesMonthFour,
- utilitiesMonthFive,
- utilitiesMonthSix,
- ) {
- let result =
- +utilitiesMonthOne +
- +utilitiesMonthTwo +
- +utilitiesMonthThree +
- +utilitiesMonthFour +
- +utilitiesMonthFive +
- +utilitiesMonthSix;
- return result;
- }
- const calcResult = () => {
- let utilitiesCost = calculateUtilitiesCost(
- utilitiesMonthOne.value,
- utilitiesMonthTwo.value,
- utilitiesMonthThree.value,
- utilitiesMonthFour.value,
- utilitiesMonthFive.value,
- utilitiesMonthSix.value,
- );
- utilitiesCostResult.innerHTML = `Стоимость коммунальных услуг: ${utilitiesCost} грн`;
- };
- utilitiesMonthOne.oninput =
- utilitiesMonthTwo.oninput =
- utilitiesMonthThree.oninput =
- utilitiesMonthFour.oninput =
- utilitiesMonthFive.oninput =
- utilitiesMonthSix.oninput =
- calcResult;
- }
|