script.js 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. /* 1. Напишите функцию a, которая будет служить коротким именем для alert,
  2. то есть выводит пользовательское сообщение в стандартном модальном окне.
  3. Напишите функцию d, которая будет служить коротким именем для debugger,
  4. то есть запускает процесс отладки.*/
  5. function a(mess) {
  6. alert(mess);
  7. }
  8. function d() {
  9. debugger;
  10. }
  11. /* 2. Напишите функцию max, которая сравнивает два числа и возвращает большее. */
  12. function max (a,b) {
  13. if (a>b) {
  14. return a
  15. } else {
  16. return b}
  17. }
  18. console.log (max(3, 4)) // 4
  19. /* 3. Напишите функцию-аналог Math.min().
  20. Функция принимает любое количество чисел и возвращает меньшее из них. */
  21. function min () {
  22. var arr = arguments;
  23. var x = arr[0];
  24. for (var j = 1; j < arr.length; j++) {
  25. if (arr[j] < x) x = arr[j];
  26. }
  27. return x;
  28. }
  29. console.log (min(301, 40, 8, 12, 63)) // 8
  30. /* 4. Изучите перебирающие методы массивов: forEach, filter, map.
  31. Создайте массив объектов users (~10 объектов),
  32. каждый объект имеет поля firstname, lastname, age с разными значениями,
  33. у некоторых есть поле middlename.
  34. Используя встроенные функции массивов:
  35. Отфильтруйте пользователей младше 18 лет
  36. Добавьте каждому объекту поле fullName,
  37. которое является конкатенацией firstname, middlename и lastname,
  38. если есть все три, и только firstname и lastname, если middlename нет
  39. Сформируйте новый массив,
  40. который содержит только полное имя пользователей.*/
  41. var users = [
  42. {firstname: 'Slava', lastname: 'Ilchenko', age: '39' },
  43. {firstname: 'Ivan', lastname: 'Ivanov', age: '23' },
  44. {firstname: 'Vasya', middlename: 'Petrovich', lastname: 'Vasilenko', age: '26' },
  45. {firstname: 'Mariya', middlename: 'Albertovna', lastname: 'Rebenko', age: '16' },
  46. {firstname: 'German', lastname: 'Vetrov', age: '14' },
  47. {firstname: 'Lidiya', middlename: 'Victorovna', lastname: 'Bebenko', age: '30' },
  48. {firstname: 'Victor', lastname: 'Gogol', age: '17' },
  49. {firstname: 'Victoriya', middlename: 'Rudolfovna', lastname: 'Gnatova', age: '27' },
  50. {firstname: 'Fedor', lastname: 'Konev', age: '15' },
  51. {firstname: 'Julia', middlename: 'Nilovaevna', lastname: 'Bern', age: '20' }
  52. ]
  53. var arrfilter = users.filter (function(users) {
  54. return users.age < 18;
  55. });
  56. console.log (arrfilter);
  57. // {firstname: "Mariya", middlename: "Albertovna", lastname: "Rebenko", age: "16"}
  58. // {firstname: "German", lastname: "Vetrov", age: "14"}
  59. // {firstname: "Victor", lastname: "Gogol", age: "17"}
  60. // {firstname: "Fedor", lastname: "Konev", age: "15"}
  61. users.forEach (function(user, i, users) {
  62. if ('middlename' in users[i]) {
  63. user.fullName = user.firstname+' ' + user.middlename + ' ' + user.lastname;
  64. } else {user.fullName = user.firstname+' ' +user.lastname;}
  65. });
  66. console.log(users);
  67. // 0: {firstname: "Slava", lastname: "Ilchenko", age: "39", fullName: "Slava Ilchenko"}
  68. // 1: {firstname: "Ivan", lastname: "Ivanov", age: "23", fullName: "Ivan Ivanov"}
  69. // 2: {firstname: "Vasya", middlename: "Petrovich", lastname: "Vasilenko", age: "26", fullName: "Vasya Petrovich Vasilenko"}
  70. // 3: {firstname: "Mariya", middlename: "Albertovna", lastname: "Rebenko", age: "16", fullName: "Mariya Albertovna Rebenko"}
  71. // 4: {firstname: "German", lastname: "Vetrov", age: "14", fullName: "German Vetrov"}
  72. // 5: {firstname: "Lidiya", middlename: "Victorovna", lastname: "Bebenko", age: "30", fullName: "Lidiya Victorovna Bebenko"}
  73. // 6: {firstname: "Victor", lastname: "Gogol", age: "17", fullName: "Victor Gogol"}
  74. // 7: {firstname: "Victoriya", middlename: "Rudolfovna", lastname: "Gnatova", age: "27", fullName: "Victoriya Rudolfovna Gnatova"}
  75. // 8: {firstname: "Fedor", lastname: "Konev", age: "15", fullName: "Fedor Konev"}
  76. // 9: {firstname: "Julia", middlename: "Nilovaevna", lastname: "Bern", age: "20", fullName: "Julia Nilovaevna Bern"}
  77. var results = users.map (function(user, i, users) {
  78. return user.fullName;
  79. });
  80. console.log(results);
  81. // 0: "Slava Ilchenko"
  82. // 1: "Ivan Ivanov"
  83. // 2: "Vasya Petrovich Vasilenko"
  84. // 3: "Mariya Albertovna Rebenko"
  85. // 4: "German Vetrov"
  86. // 5: "Lidiya Victorovna Bebenko"
  87. // 6: "Victor Gogol"
  88. // 7: "Victoriya Rudolfovna Gnatova"
  89. // 8: "Fedor Konev"
  90. // 9: "Julia Nilovaevna Bern"
  91. /* 5. Напишите функцию аналог метода массива shift.
  92. Функция удаляет из переданного в параметре массива
  93. первый элемент и возвращает новый массив.*/
  94. function del () {
  95. var arr = arguments;
  96. var myarr = [];
  97. for (var j = 1, i=0; j < arr.length; j++, i++) {
  98. myarr [i]=arr[j];
  99. }
  100. return myarr;
  101. }
  102. console.log (del('ttt', 40, 8, 12, 63)) // (4) [40, 8, "54fgh", 63]
  103. /* 6. Напишите функцию аналог метода массива push.
  104. Функция добавляет в конец переданного в параметре массив
  105. произвольное количество элементов. */
  106. function pp (arr, arrplus) {
  107. n = arr.length+arrplus.length;
  108. var newarr = new Array (n);
  109. for (var i=0, k=0; k < arr.length; i++, k++) {
  110. newarr [k] = arr [i];
  111. }
  112. for (var j=0, k=arr.length; k < n; j++, k++) {
  113. newarr [k] = arrplus [j];
  114. }
  115. return newarr;
  116. }
  117. var arr = [43, 56, 8+7, 66, 90];
  118. var arrplus = [1, 4, 7, 'tgf'];
  119. console.log (pp(arr, arrplus)); // (9) [43, 56, 15, 66, 90, 1, 4, 7, "tgf"]
  120. /* 7. Напишите функцию аналог метода jQuery $.extend. && source.hasOwnProperty(property)
  121. Первый параметр функции - целевой объект, поля которого будут
  122. изменены или расширены. Остальные параметры - объекты-источники,
  123. полями которых будет расширяться целевой объект.*/
  124. function extend (obj) {
  125. for(i=1; i < arguments.length; i++) {
  126. var source = arguments[i];
  127. for (var property in source) {
  128. obj[property] = source[property];
  129. }
  130. }
  131. return obj;
  132. };
  133. var source = {firstname: 'Slava', city: 'Kharkov', age: 10}
  134. var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'}, {dateofbirth: '1978-11-21'});
  135. console.log(source); // Object {firstname: "John", city: "Kharkov", age: 10, lastname: "Doe", dateofbirth: "1978-11-21"}
  136. console.log(s); // Object {firstname: "John", city: "Kharkov", age: 10, lastname: "Doe", dateofbirth: "1978-11-21"}
  137. /* 8. Напишите функцию setComment с параметрами:
  138. date, message, author. Дата и текст сообщения - обязательные параметры,
  139. если какой-то из них или оба отсутствуют, то выполнение функции
  140. должно обрываться, а пользователю выдаваться предупреждение (alert) о том,
  141. что данные переданы некорректно.
  142. Параметр author - опциональный, но должна происходить проверка:
  143. если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
  144. Функция распечатывает на странице текст в формате:
  145. <имя_автора>, <дата>
  146. <текст_сообщения> */
  147. function setComment (date, message, author) {
  148. if (!(author)) {
  149. author = 'Anonymous';}
  150. if ((!(date) || !(message)) || (!(date) && !(message))) {
  151. alert ('Работа функции не возможна');
  152. } else {
  153. $("body").toggleClass("comment");
  154. $('.comment').append("<h3>");
  155. $('h3').append(author,', ', date);
  156. $('.comment').append("<p>");
  157. $('.comment p').append(message);
  158. $('.comment').css({'padding': '0 10px', 'border': '1px solid black',
  159. 'width': '25%', 'margin': '0 auto'});
  160. $('.comment').append("</br>");
  161. }
  162. }
  163. setComment ('2018-05-02', 'Здрасти я ваша тетя', 'Slava');
  164. /*9. Используя замыкание, напишите функцию createTimer,
  165. которая использует метод performance.now() для получения текущей
  166. временной метки и служит для замера времени выполнения другого кода. */
  167. function createTimer () {
  168. var t0 = performance.now();
  169. return function() {
  170. var t1 = performance.now();
  171. var timer = t1 - t0;
  172. return timer;
  173. }
  174. }
  175. var timer = createTimer();
  176. alert('!11111') // код, время выполнения которого нужно измерить
  177. alert( timer() + ' мкс'); // время в мкс от начала выполнения createTimer() до момента вызова timer()
  178. /* 10. Используя замыкания, создайте функцию createAdder(),
  179. которая принимает на вход любой примитивный параметр
  180. и возвращает функцию,
  181. которая добавляет к первому параметру второй.*/
  182. function createAdder (a) {
  183. return function (b) {
  184. return (a+b);
  185. }
  186. }
  187. var hello = createAdder('Hello, ');
  188. alert( hello('Ivan') ); // Hello, Ivan
  189. alert( hello('Vasya') ); // Hello, Vasya
  190. var plus = createAdder(62);
  191. alert( plus(11) ); // 73
  192. alert( plus(15) ); // 77