script.js 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. // 1. Напишите функцию a, которая будет служить коротким именем для alert, то есть выводит пользовательское сообщение в стандартном модальном окне.
  2. // Напишите функцию d, которая будет служить коротким именем для debugger, то есть запускает процесс отладки.
  3. // : 5
  4. // : 2
  5. function a(greeting) {
  6. alert('Hello');
  7. }
  8. function d() {
  9. debugger;
  10. }
  11. a('Hello');
  12. d();
  13. a('World');
  14. // 2. Напишите функцию max, которая сравнивает два числа и возвращает большее:
  15. // : 10
  16. // : 3
  17. function max (x,y) {
  18. if(x < y){
  19. alert(y);
  20. }else if (y < x){
  21. alert(x);
  22. }
  23. }
  24. consol.log(max(0,-1));
  25. // 3. Напишите функцию-аналог Math.min(). Функция принимает любое количество чисел и возвращает меньшее из них:
  26. // : 20
  27. // :
  28. function min() {
  29. var min = arguments[0];
  30. for(var i = 1; i < arguments.length; i++) {
  31. if(arguments[i] < min) {
  32. min = arguments[i];
  33. }
  34. }
  35. return min;
  36. }
  37. // 4. Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов), каждый объект имеет поля firstname, lastname, age с разными значениями,
  38. // у некоторых есть поле middlename. Используя встроенные функции массивов:
  39. //Отфильтруйте пользователей младше 18 лет
  40. //Добавьте каждому объекту поле fullName, которое является конкатенацией firstname, middlename и lastname, если есть все три, и только firstname и lastname, если middlename нет
  41. // Сформируйте новый массив, который содержит только полное имя пользователей
  42. // : 30
  43. // : 50
  44. var users = [
  45. {
  46. firstname : 'Nikita',
  47. middlename : 'Nik',
  48. lastname : 'Malko',
  49. age : 23,
  50. },
  51. {
  52. firstname : 'Maksim',
  53. middlename : 'Bob',
  54. lastname : 'Burlaka',
  55. age : 20,
  56. },
  57. {
  58. firstname : 'Maks',
  59. middlename : 'Sema',
  60. lastname : 'Semin',
  61. age : 23,
  62. },
  63. {
  64. firstname : 'Ivan',
  65. lastname : 'Seleznev',
  66. age : 5,
  67. },
  68. {
  69. firstname : 'Alina',
  70. lastname : 'Osadchay',
  71. age : 20,
  72. },
  73. {
  74. firstname : 'Alisa',
  75. lastname : 'Selezneva',
  76. age : 12,
  77. },
  78. {
  79. firstname : 'Alexey',
  80. lastname : 'Litvin',
  81. age : 21,
  82. },
  83. {
  84. firstname : 'Stefan',
  85. lastname : 'Fursov',
  86. age : 8,
  87. },
  88. {
  89. firstname : 'Kira',
  90. lastname : 'Fursova',
  91. age : 4,
  92. },
  93. {
  94. firstname : 'Alina',
  95. lastname : 'Burluckay',
  96. age : 20,
  97. },
  98. {
  99. firstname : 'Marina',
  100. lastname : 'Selezneva',
  101. age : 38,
  102. },
  103. ];
  104. var a = users.filter(function(users) {
  105. return filterAge.age > 18;
  106. });
  107. var b = users.forEach(function(users){
  108. users.fullName = users.firstname + ' ' + users.lastname + ' ' + users.middlename;
  109. if (users.middlename === undefined){
  110. users.fullName = users.firstname + ' ' +users.lastname;
  111. }
  112. });
  113. // 5. Напишите функцию аналог метода массива shift. Функция удаляет из переданного в параметре массива первый элемент и возвращает новый массив.
  114. // : 30
  115. // : 15
  116. var delFirst = function (arr){
  117. arr.shift();
  118. }
  119. arr = ['aaspflas','as','asdlas','asldasl']
  120. delFirst(arr);
  121. // 6. Напишите функцию аналог метода массива push. Функция добавляет в конец переданного в параметре массив произвольное количество элементов.
  122. // : 20
  123. // : 25
  124. var pussy = function (arr){
  125. arr.push(Math.ceil(Math.random() * 10));
  126. return arr;
  127. }
  128. pussy([10,3231,412412]);
  129. // 7. Напишите функцию аналог метода jQuery $.extend. Первый параметр функции - целевой объект, поля которого будут изменены или расширены. Остальные параметры -
  130. // объекты-источники, полями которых будет расширяться целевой объект.
  131. // var source = {firstname: 'Tom', age: 10}
  132. // var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'});
  133. // console.log(source); // {firstname: 'John', age: 10, lastname: 'Doe'}
  134. // console.log(s); // {firstname: 'John', age: 10, lastname: 'Doe'}
  135. // : 20
  136. // : 15
  137. var source = {firstname: 'Tom', age: 10}
  138. function extend(firstObj, obj1, obj2){
  139. var a = $.extend(obj1,obj2);
  140. return $.extend(firstObj,a);
  141. }
  142. var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'});
  143. console.log(source);
  144. console.log(s);
  145. // 8.Напишите функцию setComment с параметрами: date, message, author. Дата и текст сообщения - обязательные параметры, если какой-то из них или оба отсутствуют,
  146. // то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) о том, что данные переданы некорректно. Параметр author - опциональный,
  147. // но должна происходить проверка: если параметр не передан, то вместо него подставляется значение ‘Anonymous’. Функция распечатывает на странице текст в формате:
  148. // <имя_автора>, <дата>
  149. // <текст_сообщения>
  150. // : 15
  151. // : 10
  152. function setComment(date, message, author){
  153. if (date === undefined) return;
  154. if (message === undefined) return;
  155. if (author === undefined) {
  156. author = 'Anonymous';
  157. };
  158. return alert(author + ' ' + date + '\n' + message);
  159. }
  160. setComment('2016-11-02', 'Everything is ok', 'John');
  161. setComment('2016-11-02', 'You could do it better!');
  162. // ЗАМЫКАНИЕ
  163. // 9. Используя замыкание, напишите функцию createTimer, которая использует метод performance.now() для получения текущей временной метки и служит для замера времени выполнения
  164. // другого кода:
  165. //
  166. //
  167. function createTimer () {
  168. var firstTime = performance.now();
  169. return function secondCreateTime () {
  170. return performance.now() - firstTime;
  171. }
  172. }
  173. var timer = createTimer();
  174. alert('!') // код, время выполнения которого нужно измерить
  175. alert( timer() ); // время в мкс от начала выполнения createTimer() до момента вызова timer()
  176. // 10. Используя замыкания, создайте функцию createAdder(), которая принимает на вход любой примитивный параметр и возвращает функцию, которая добавляет к первому параметру второй.
  177. // Функция работает по следующему принципу:
  178. // : 20
  179. // :
  180. function createAdder(args) {
  181. return function secondCreateAdder(args2){
  182. return args + args2;
  183. }
  184. }
  185. var hello = createAdder('Hello, ');
  186. alert( hello('John') ); // Hello, John
  187. alert( hello('Harry') ); // Hello, Harry
  188. var plus = createAdder(5);
  189. alert( plus(1) ); // 6
  190. alert( plus(5) ); // 10