js.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. // 1. Temperature
  2. // Оформите Temperature как функцию, в которую параметром передается температура в одной системе, а возвращается в
  3. // другой. Никаких prompt и console.log в коде быть не должно, если вы хотите в дальнейшем пользоваться этой функцией
  4. // где угодно в коде удобно. Нужен ли блок кода в функции для решения этой задачи?
  5. /*{
  6. const temp = a => a * 1.8 + 32;
  7. }*/
  8. //2. RGB
  9. // Оформите Number: RGB как функцию, в которую параметрами передаются три числа (r,g,b) => . Функция должна возвращать
  10. // строку в нотации #RRGGBB. Используя условия или тернарный оператор добейтесь что бы в результате всегда было
  11. // 7 символов, даже когда значение цвета меньше 15ти. Нужен ли блок кода этой функции?
  12. /*{
  13. const rgbToHex = (r,g,b) => {
  14. const hex = '#' +
  15. (r > 15 ? r.toString(16) : "0" + r.toString(16)) +
  16. (g > 15 ? g.toString(16) : "0" + g.toString(16)) +
  17. (b > 15 ? b.toString(16) : "0" + b.toString(16));
  18. return hex
  19. }
  20. console.log(rgbToHex(15,10,5))
  21. }*/
  22. //3. Flats
  23. // Оформите Number: flats как функцию. Продумайте достаточное количество параметров для решения задачи. Функция должна
  24. // возвращать объект вида {entrance, floor}, где entrance - номер падика, floor - номер этажа на котором находится
  25. // квартира.
  26. /*{
  27. const result = (porch, area, floor, flat) => {
  28. const total = porch * floor * area; // Общее количество квартир в доме
  29. const totalPorch = total / porch; // Количество квартир в одном подьезде
  30. const numPorch = Math.floor(1 + (flat - 1) / totalPorch) ;
  31. const numFloor = Math.floor(1 + ((flat - 1) % totalPorch) / area);// Номер подьезда
  32. console.log(flatResult);
  33. return flatResult = {
  34. numPorch,
  35. numFloor
  36. }
  37. }
  38. result(4,4,5,30);
  39. } */
  40. // 4. Credentials
  41. // Оформите задание String: credentials как функцию без параметров. Используйте функцию capitalize из домашнего
  42. // задания по массивам. Функция должна содержать вызовы prompt и возвращать объект вида {name, surname, fatherName,
  43. // fullName}
  44. /*{
  45. function capitalize() {
  46. const name = prompt('Введите имя');
  47. const fatherName = prompt('Введите отчество')
  48. const surname = prompt('Введите фамилию')
  49. let fullName = name + " " + fatherName + " " + surname;
  50. const arr = fullName.split(' ');
  51. const newArr = [];
  52. arr.forEach((item) => {
  53. const word = item[0].toUpperCase() + item.slice(1);
  54. newArr.push(word);
  55. })
  56. const obj = Object.assign({}, newArr);
  57. console.log(obj)
  58. return obj;
  59. }
  60. capitalize()
  61. } */
  62. //5. New line
  63. // Оформите задание String: new line как функцию с параметром-строкой. Функция должна возвращать строку с настоящими
  64. // переносами.
  65. /*{
  66. const string = (str = prompt('введите несколько строк разделенных \n')) => {
  67. return str.split('\\n').join('\n');
  68. }
  69. let result = string()
  70. alert(result);
  71. }*/
  72. //6. Prompt OR
  73. // Оформите задание Prompt: OR как функцию, которая принимает строку для prompt и значение по умолчанию. Функция должна
  74. // возвращать введенный текст или значение по умолчанию в случае отказа пользователя вводить что-либо. Используйте
  75. // функцию без блока кода (функцию в одно выражение)
  76. /*
  77. {
  78. const promptOr = (promptStr, promptDefault) => prompt (promptStr) || promptDefault
  79. console.log( promptOr('Введите что-то', 'ignore') )
  80. }
  81. }*/
  82. //7. Login And Password
  83. // Оформите задание Login And Password как функцию, которая принимает два параметра - правильный логин и пароль и
  84. // возвращает true если логин и пароль введенные пользователями верны, или false если пользователь не смог.
  85. /*
  86. {
  87. const sign = (userName = 'admin', pass ='qwerty' ) => {
  88. if (userName === 'admin') {
  89. if (pass === 'qwerty') {
  90. alert('Успешный вход');
  91. } else if (pass === '' || pass == null) {
  92. alert('Пароль не введен');
  93. } else {
  94. alert('Неправильный пароль');
  95. }
  96. } else if (userName === '' || userName == null) {
  97. alert('Логин не введен');
  98. } else {
  99. alert("Неправильный логин");
  100. }
  101. }
  102. sign('admin', 'qwerty')
  103. }*/
  104. // 8. For Table
  105. // Оформите задание For Multiply Table как функцию, которая принимает любой массив с массивами, а возвращает строку
  106. // HTML с тэгом <table> и всякими tr и td.
  107. /*{
  108. const arr = [
  109. [0,0,0,0,0,0],
  110. [0,1,2,3,4,5],
  111. [0,2,4,6,8,10],
  112. [0,3,6,9,12,15],
  113. [0,4,8,12,16,20],
  114. [0,5,10,15,20,25]
  115. ];
  116. const newTable = arr => {
  117. let str = "<table>"
  118. let i = 1
  119. for (let tr of arr){
  120. if (i++ % 2 === 0){
  121. str += '<tr>'
  122. }else{
  123. str += "<tr>"
  124. }
  125. for (let td of tr){
  126. str += "<td>" + td + "</td>"
  127. }
  128. str += "</tr>"
  129. }
  130. str += "</table>"
  131. return (str)
  132. }
  133. newTable(arr)
  134. } */
  135. //9. Filter Lexics
  136. // Оформите задание Filter Lexics как функцию, принимающую любую строку для проверки и массив некорректных слов
  137. // (['бляха', 'муха', "пляха", "шабля"], например). Функция должна возвращать строку без этих некорректных слов.
  138. /*{
  139. let arrBadWords = ['бляха', 'муха', "пляха", "шабля"];
  140. let str = prompt("Введите текст");
  141. let filterLexics = (str, arrBadWords) => {
  142. let arr = str.split(" ");
  143. const f = (word) => {
  144. for (let badWords of arrBadWords) {
  145. if (word === badWords) {
  146. return false
  147. } else {
  148. return true }
  149. }
  150. }
  151. let arrNew = arr.filter(f);
  152. return arrNew.join(' ')
  153. }
  154. console.log(filterLexics(str, arrBadWords))
  155. } */
  156. // 10. Currency Table +-
  157. // Оформите задание Currency Table как функцию, без параметров, которая складывает полученные данные во внутренний
  158. // двумерный массив, после чего отображает его используя функцию из задания For Table
  159. {
  160. fetch('https://open.er-api.com/v6/latest/USD').then(res => res.json())
  161. .then(data => {
  162. const fullArr = Object.entries(data.rates);
  163. console.log(fullArr )
  164. const newTable = () => {
  165. let str = "<table>"
  166. let i = 1
  167. for (let tr of fullArr){
  168. if (i++ % 2 === 0){
  169. str += '<tr style="background-color: lightgray;">'
  170. }else{
  171. str += "<tr>"
  172. }
  173. for (let td of tr){
  174. str += "<td>" + td + "</td>"
  175. }
  176. str += "</tr>"
  177. }
  178. str += "</table>"
  179. document.write(str)
  180. }
  181. newTable()
  182. })
  183. }
  184. //11. Form +
  185. // Оформите задание Form как функцию, которая принимает любой объект как параметр и создает форму на экране.
  186. /*{
  187. const car = {
  188. "Name":"chevrolet chevelle malibu",
  189. "Cylinders":8,
  190. "Displacement":307,
  191. "Horsepower":130,
  192. "Weight_in_lbs":3504,
  193. "Origin":"USA",
  194. "in_production": false }
  195. const createForm = car => {
  196. for (const [key, values] of Object.entries(car)) {
  197. str = "<form>";
  198. if (typeof values === 'string') {
  199. str += "<label>" + key + "<input type='text' value='" + values + "'/>" + "</label>";
  200. } else if (typeof values === 'number') {
  201. str += "<label>" + key + "<input type='number' value='" + values + "'/>" + "</label>";
  202. } else if (typeof values === 'boolean') {
  203. str += "<label>" + key + "<input type='checkbox' value='" + values + "'/>" + "</label>";
  204. }
  205. str += "</form>"
  206. document.write(str);
  207. }
  208. }
  209. createForm(car)
  210. }*/
  211. //12. Array of objects sort +
  212. // Сделайте обобщенную функцию сортировки массива с объектами
  213. // Функция позволяет отсортировать любой набор данных по имени поля (второй параметр). Третьим параметром идет
  214. // необязательный Boolean, который в случае true делает сортировку по возрастанию, в случае false - по убыванию.
  215. // По умолчанию (без третьего параметра) происходит сортировка по возрастанию.
  216. // Если параметр не задан - внутри функции он равен undefined
  217. /*{
  218. let persons = [
  219. {name: "Иван", age: 17},
  220. {name: "Мария", age: 35},
  221. {name: "Алексей", age: 73},
  222. {name: "Яков", age: 12},
  223. ]
  224. function sort(arr, key,boolean){
  225. arr.sort(mySort)
  226. function mySort(a, b){
  227. return (boolean) ? (a[key] > b[key]) : (b[key] > a[key]);
  228. }
  229. return arr;
  230. }
  231. console.log(sort(persons, "name", false));
  232. } */
  233. // 14. Divide
  234. // Реализуйте задание Number: divide в HTML:
  235. /*{
  236. <input type='number' id="firstNumber" />
  237. <input type='number' id="secondNumber" />
  238. <div>
  239. <p>Первое число поместится во втором целых <span id="divisionResult">___ </span> раз </p>
  240. </div>
  241. <script>
  242. const calcResult = () => {
  243. console.log(firstNumber.value, secondNumber.value, divisionResult.innerHTML)
  244. divisionResult.innerHTML = Math.floor(Math.abs(firstNumber.value/secondNumber.value ))
  245. }
  246. firstNumber.oninput = secondNumber.oninput = calcResult
  247. } */
  248. // Воспользуйтесь следующей информацией:
  249. // все id в HTML становятся глобальными переменными (если это имя не занято, id="prompt" не сработает, функция
  250. // prompt будет работать и далее);
  251. // Любой DOM-элемент (то, что в HTML называется тэгом или парой тэгов) является объектом;
  252. // Для доступа к атрибуту value тэгов input используется свойство value (например, firstNumber.value)
  253. // Для доступа к вложенному тексту парных тэгов используется свойство innerHTML (например, divisionResult.innerHTML)
  254. //
  255. // Заготовка выше обеспечивает запуск функции calcResult по любому изменению текста в полях ввода. Напишите в ней
  256. // деление значений из полей ввода и выведите резуль тат в div.
  257. // 15. Calc Func
  258. // Вспомните первое ДЗ по Javascript, в котором вы делали всякие расчеты используя код на Javascript. Оформите это как
  259. // функцию:
  260. //
  261. // найдите все входящие данные, сделайте из них параметры
  262. // найдите переменную с результатом расчетов и сделайте так, что бы ваша функция возвращала этот результат.
  263. // Если результатов несколько, создайте объект из этих результатов и верните его.
  264. /*
  265. {
  266. const amountCoffee = (coffeeCup = +prompt('Введите количество чашек кофе, которые Вы покупаете за день'),
  267. price = +prompt('Введите цену одной чашки кофе (грн.)')) => {
  268. let dailyConst = coffeeCup * price;
  269. console.log(dailyConst)
  270. }
  271. amountCoffee()
  272. } */
  273. //16. Calc Live +
  274. // Используя пример из задания Divide и функцию из Calc Func сделайте несколько полей ввода в HTML, меняя которые вы
  275. // будете получать результат калькуляции в каком-то div.
  276. /*
  277. <p> Введите количество чашек кофе, которые Вы покупаете за день </p>
  278. <input type='number' id="coffeeCup" />
  279. <p> Введите стоимость одной чашки кофе </p>
  280. <input type='number' id="price" />
  281. <div>
  282. <p> Расходы на кофе за день <span id="dailyExpenses">___ </span> грн </p>
  283. </div>
  284. <script>
  285. const calcResult = () => {
  286. dailyExpenses.innerHTML= coffeeCup.value * price.value;
  287. }
  288. coffeeCup.oninput = price.oninput = calcResult
  289. </script> -->
  290. } */