index.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370
  1. // ДЗ: Функции
  2. // задание 1 Temperature
  3. {
  4. function celsiusToFahrenheit(celsius) {
  5. return (9 / 5) * celsius + 32;
  6. }
  7. }
  8. {
  9. function fahrenheitToCelsius(fahrenheit) {
  10. return (5 / 9) * (fahrenheit - 32);
  11. }
  12. }
  13. {
  14. // Чтобы вызвать функцию, нужно написать ее имя, а затем указать аргументы в скобках. Например:
  15. let fahrenheit = celsiusToFahrenheit(30);
  16. console.log(`30°C = ${fahrenheit}°F`);
  17. let celsius = fahrenheitToCelsius(86);
  18. console.log(`86°F = ${celsius}°C`);
  19. }
  20. // задание 2 RGB
  21. {
  22. function createCSSColor(r, g, b) {
  23. r = r.toString(16);
  24. g = g.toString(16);
  25. b = b.toString(16);
  26. r = r.length === 1 ? '0' + r : r;
  27. g = g.length === 1 ? '0' + g : g;
  28. b = b.length === 1 ? '0' + b : b;
  29. return '#' + r + g + b;
  30. }
  31. }
  32. // блок кода функции является обязательным элементом функции, и его нужно указывать в любом случае
  33. // задание 3 Flats
  34. {
  35. function findApartment(floors, apartmentsPerFloor, apartmentNumber) {
  36. const countFlatsAtEntrance = floors * apartmentsPerFloor;
  37. const entrance = Math.ceil(apartmentNumber / countFlatsAtEntrance);
  38. const floor = Math.ceil(
  39. (countFlatsAtEntrance - (countFlatsAtEntrance * entrance - apartmentNumber)) /
  40. apartmentsPerFloor,
  41. );
  42. return { entrance, floor };
  43. }
  44. }
  45. // задание 4 Credentials
  46. {
  47. function getFullName() {
  48. // Функция, которая преобразует строку в формат "Слово с большой буквы"
  49. function capitalize(str) {
  50. return str[0].toUpperCase() + str.slice(1).toLowerCase();
  51. }
  52. const name = capitalize(prompt('Введите ваше имя').trim());
  53. const surname = capitalize(prompt('Введите вашу фамилию').trim());
  54. const fatherName = capitalize(prompt('Введите ваше отчество').trim());
  55. const fullName = `${surname} ${name} ${fatherName}`;
  56. return { name, surname, fatherName, fullName };
  57. }
  58. const result = getFullName();
  59. console.log(result); // {name: "Имя", surname: "Фамилия", fatherName: "Отчество", fullName: "Фамилия Имя Отчество"}
  60. }
  61. // задание 5 New line
  62. {
  63. function getMultiLineString(inputString) {
  64. return inputString.split('\\n').join('\n');
  65. }
  66. const result = getMultiLineString('Первая строка\\nВторая строка\\nТретья строка');
  67. console.log(result); // "Первая строка\nВторая строка\nТретья строка"
  68. }
  69. // задание 6 Prompt OR
  70. {
  71. function getUserInput(promptString, defaultValue) {
  72. return prompt(promptString) || defaultValue;
  73. }
  74. }
  75. {
  76. // Пример использования:
  77. let year = getInput('укажите ваш возраст', '22');
  78. const date = 2022 - year;
  79. alert(date);
  80. }
  81. // задание 7 Login And Password
  82. {
  83. function checkCredentials(correctLogin, correctPassword) {
  84. const userLogin = prompt('Login');
  85. if (userLogin !== correctLogin) {
  86. alert('Wrong login');
  87. return false;
  88. }
  89. const userPassword = prompt('Password');
  90. if (userPassword !== correctPassword) {
  91. alert('Wrong password');
  92. return false;
  93. }
  94. alert('congratz');
  95. return true;
  96. }
  97. }
  98. // задание 8 For Table
  99. {
  100. function createTable(data) {
  101. let html = '<table>';
  102. for (let i = 0; i < data.length; i++) {
  103. const row = data[i];
  104. html += `<tr style="background-color: ${i % 2 ? '#eee' : '#fff'}">`;
  105. for (const cell of row) {
  106. html += `<td>${cell}</td>`;
  107. }
  108. html += '</tr>';
  109. }
  110. html += '</table>';
  111. return html;
  112. }
  113. }
  114. // задание 9 Filter Lexics
  115. {
  116. function filterString(str, bannedWords) {
  117. const words = str.split(' '); // разбиваем строку на слова
  118. const filteredWords = words.filter((word) => !bannedWords.includes(word)); // фильтруем слова
  119. return filteredWords.join(' '); // собираем массив в строку
  120. }
  121. console.log(filterString('I want to eat ice cream', ['want', 'to']));
  122. }
  123. // задание 10 Currency Table
  124. {
  125. function fetchAndCreateTable() {
  126. // Запрашиваем текущие курсы валют с сервера
  127. fetch('https://open.er-api.com/v6/latest/USD')
  128. .then((res) => res.json())
  129. .then((data) => {
  130. // Получаем объект с курсами валют
  131. const rates = data.rates;
  132. // Создаем массив для хранения кросскурсов
  133. const crossRates = [];
  134. // Добавляем заголовки таблицы в массив
  135. crossRates.push(['', ...Object.keys(rates)]);
  136. // Добавляем остальные строки таблицы в массив
  137. for (const currency1 in rates) {
  138. const row = [currency1];
  139. for (const currency2 in rates) {
  140. // Рассчитываем кросскурс между валютами
  141. const crossRate = rates[currency1] / rates[currency2];
  142. row.push(crossRate);
  143. }
  144. crossRates.push(row);
  145. }
  146. // Генерируем HTML-код таблицы
  147. const html = createTable(crossRates);
  148. // Вставляем HTML-код таблицы в документ
  149. document.getElementById('currencyTable').innerHTML = html;
  150. });
  151. }
  152. }
  153. // задание 11 Form
  154. {
  155. function createFormFromObject(obj) {
  156. // создаем элемент формы
  157. let form = document.createElement('form');
  158. // итерируемся по ключам объекта
  159. for (const key in obj) {
  160. if (obj.hasOwnProperty(key)) {
  161. // получаем значение свойства
  162. const value = obj[key];
  163. // определяем тип инпута в зависимости от типа значения свойства
  164. let inputType;
  165. switch (typeof value) {
  166. case 'string':
  167. inputType = 'text';
  168. break;
  169. case 'number':
  170. inputType = 'number';
  171. break;
  172. case 'boolean':
  173. inputType = 'checkbox';
  174. break;
  175. default:
  176. inputType = 'text';
  177. }
  178. // создаем элементы label и input
  179. let label = document.createElement('label');
  180. let input = document.createElement('input');
  181. // устанавливаем тип инпута
  182. input.type = inputType;
  183. // устанавливаем значение инпута
  184. input.value = value;
  185. // добавляем текстовую надпись к элементу label
  186. label.appendChild(document.createTextNode(`${key}: `));
  187. // добавляем элемент input к элементу label
  188. label.appendChild(input);
  189. // добавляем элемент label к элементу form
  190. form.appendChild(label);
  191. }
  192. }
  193. // возвращаем элемент form
  194. return form;
  195. }
  196. }
  197. // задание 12 Array of objects sort
  198. {
  199. function sort(arr, field, ascending = true) {
  200. arr.sort((a, b) => {
  201. if (ascending) {
  202. return a[field] > b[field] ? 1 : -1;
  203. } else {
  204. return a[field] < b[field] ? 1 : -1;
  205. }
  206. });
  207. }
  208. // пример использования функции
  209. var persons = [
  210. { name: 'Иван', age: 17 },
  211. { name: 'Мария', age: 35 },
  212. { name: 'Алексей', age: 73 },
  213. { name: 'Яков', age: 12 },
  214. ];
  215. // сортирует по возрасту по возрастанию
  216. sort(persons, 'age');
  217. console.log(persons); // [{name: "Яков", age: 12}, {name: "Иван", age: 17}, {name: "Мария", age: 35}, {name: "Алексей", age: 73}]
  218. // сортирует по имени по убыванию
  219. sort(persons, 'name', false);
  220. console.log(persons); // [{name: "Мария", age: 35}, {name: "Иван", age: 17}, {name: "Алексей", age: 73}, {name: "Яков", age: 12}]
  221. }
  222. // задание 13 Table
  223. {
  224. function createTable(array, sortField, sortOrder) {
  225. // Копируем исходный массив
  226. const data = [...array];
  227. // Сортируем с помощью функции из предыдущего задания
  228. sort(data, sortField, sortOrder);
  229. // Первый проход - поиск колонок
  230. const columns = [];
  231. data.forEach((person) => {
  232. for (const key in person) {
  233. if (!columns.includes(key)) {
  234. columns.push(key);
  235. }
  236. }
  237. });
  238. // Начинаем создание таблицы
  239. let tableHTML = '<table><tr>';
  240. // Формируем строку с заголовками
  241. columns.forEach((column) => {
  242. tableHTML += `<th>${column}</th>`;
  243. });
  244. tableHTML += '</tr>';
  245. // Второй проход - отображение таблицы
  246. data.forEach((person) => {
  247. tableHTML += '<tr>';
  248. columns.forEach((column) => {
  249. tableHTML += `<td>${person[column]}</td>`;
  250. });
  251. tableHTML += '</tr>';
  252. });
  253. tableHTML += '</table>';
  254. console.log(tableHTML);
  255. }
  256. }
  257. // задание 14 Divide
  258. {
  259. const calcResult = () => {
  260. const firstNumber = document.getElementById('firstNumber').value;
  261. const secondNumber = document.getElementById('secondNumber').value;
  262. const divisionResult = document.getElementById('divisionResult');
  263. divisionResult.innerHTML = Math.floor(firstNumber / secondNumber);
  264. };
  265. document.getElementById('firstNumber').oninput = calcResult;
  266. document.getElementById('secondNumber').oninput = calcResult;
  267. }
  268. // задание 15 Calc Func
  269. {
  270. function calculateUtilitiesCost(
  271. utilitiesMonthOne,
  272. utilitiesMonthTwo,
  273. utilitiesMonthThree,
  274. utilitiesMonthFour,
  275. utilitiesMonthFive,
  276. utilitiesMonthSix,
  277. ) {
  278. let result =
  279. +utilitiesMonthOne +
  280. +utilitiesMonthTwo +
  281. +utilitiesMonthThree +
  282. +utilitiesMonthFour +
  283. +utilitiesMonthFive +
  284. +utilitiesMonthSix;
  285. return result;
  286. }
  287. let utilitiesCost = calculateUtilitiesCost(50, 60, 70, 80, 90, 100);
  288. console.log(utilitiesCost + ' грн');
  289. }
  290. // задание 16 Calc Live
  291. {
  292. function calculateUtilitiesCost(
  293. utilitiesMonthOne,
  294. utilitiesMonthTwo,
  295. utilitiesMonthThree,
  296. utilitiesMonthFour,
  297. utilitiesMonthFive,
  298. utilitiesMonthSix,
  299. ) {
  300. let result =
  301. +utilitiesMonthOne +
  302. +utilitiesMonthTwo +
  303. +utilitiesMonthThree +
  304. +utilitiesMonthFour +
  305. +utilitiesMonthFive +
  306. +utilitiesMonthSix;
  307. return result;
  308. }
  309. const calcResult = () => {
  310. let utilitiesCost = calculateUtilitiesCost(
  311. utilitiesMonthOne.value,
  312. utilitiesMonthTwo.value,
  313. utilitiesMonthThree.value,
  314. utilitiesMonthFour.value,
  315. utilitiesMonthFive.value,
  316. utilitiesMonthSix.value,
  317. );
  318. utilitiesCostResult.innerHTML = `Стоимость коммунальных услуг: ${utilitiesCost} грн`;
  319. };
  320. utilitiesMonthOne.oninput =
  321. utilitiesMonthTwo.oninput =
  322. utilitiesMonthThree.oninput =
  323. utilitiesMonthFour.oninput =
  324. utilitiesMonthFive.oninput =
  325. utilitiesMonthSix.oninput =
  326. calcResult;
  327. }