script.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325
  1. // Напишите функцию max, которая сравнивает два числа и возвращает большее:
  2. // function comparison() {
  3. // x = +prompt('Enter first number');
  4. // y = +prompt('Enter second number');
  5. // if (isFinite(x) && isFinite(y)) {
  6. // if (x < y) {
  7. // alert(y + ' > ' + x);
  8. // }else if (y < x) {
  9. // alert(x + ' > ' + y);
  10. // }else alert('values are the same');
  11. // }else alert('Incorrect, not a number');
  12. // }
  13. // comparison();
  14. // Напишите функцию-аналог Math.min(). Функция принимает любое количество чисел и возвращает меньшее из них:
  15. // function min() {
  16. // for (var i = 0, min = arguments[0]; i < arguments.length; i++){
  17. // if (arguments[i] < arguments[0]) {
  18. // min = arguments[i];
  19. // }
  20. // }
  21. // console.log(min);
  22. // }
  23. // min(3, 6, 8, 0, -1, 5, 6, 8);
  24. // Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов),
  25. // каждый объект имеет поля firstname, lastname, age с разными значениями. Используя встроенные функции массивов:
  26. // Отфильтруйте пользователей младше 18 лет
  27. // Добавьте каждому объекту поле fullName, которое является конкатенацией имени и фамилии
  28. // Сформируйте новый массив, который содержит только полное имя пользователей
  29. // debugger;
  30. // var arr = [
  31. // {
  32. // firstname: 'John',
  33. // lastname: 'Smith',
  34. // age: '15'
  35. // },
  36. // {
  37. // firstname: 'Tony',
  38. // lastname: 'Stark',
  39. // age: '54'
  40. // },
  41. // {
  42. // firstname: 'Jeck',
  43. // lastname: 'Morris',
  44. // age: '25'
  45. // },
  46. // {
  47. // firstname: 'Anthony',
  48. // lastname: 'Montana',
  49. // age: '34'
  50. // },
  51. // {
  52. // firstname: 'Gregory',
  53. // lastname: 'Guck',
  54. // age: '14'
  55. // },
  56. // {
  57. // firstname: 'Joffry',
  58. // lastname: 'Barateon',
  59. // age: '19'
  60. // },
  61. // {
  62. // firstname: 'Sansa',
  63. // lastname: 'Redhead',
  64. // age: '10'
  65. // },
  66. // {
  67. // firstname: 'Kreol',
  68. // lastname: 'Destroyer',
  69. // age: '90'
  70. // },
  71. // {
  72. // firstname: 'Oleg',
  73. // lastname: 'Britva',
  74. // age: '33'
  75. // },
  76. // {
  77. // firstname: 'Crazy',
  78. // lastname: 'Frog',
  79. // age: '58'
  80. // }
  81. // ];
  82. // var more18 = arr.filter(function(item, i, age){
  83. // return arr[i].age > 18;
  84. // })
  85. // var add = function(){}
  86. // for (var i=0; i < arr.length;i++) {
  87. // var fullName = arr[i].firstname + ' ' + arr[i].lastname;
  88. // arr[i].fullName = fullName;
  89. // };
  90. // var full = arr.map(function(item){
  91. // return item.fullName;
  92. // });
  93. // Напишите функцию аналог метода массива shift. Функция удаляет из переданного в параметре массива первый элемент.
  94. // var arr = [
  95. // {
  96. // firstname: 'John',
  97. // lastname: 'Smith',
  98. // age: '15'
  99. // },
  100. // {
  101. // firstname: 'Tony',
  102. // lastname: 'Stark',
  103. // age: '54'
  104. // },
  105. // {
  106. // firstname: 'Jeck',
  107. // lastname: 'Morris',
  108. // age: '25'
  109. // },
  110. // {
  111. // firstname: 'Anthony',
  112. // lastname: 'Montana',
  113. // age: '34'
  114. // },
  115. // {
  116. // firstname: 'Gregory',
  117. // lastname: 'Guck',
  118. // age: '14'
  119. // },
  120. // {
  121. // firstname: 'Joffry',
  122. // lastname: 'Barateon',
  123. // age: '19'
  124. // },
  125. // {
  126. // firstname: 'Sansa',
  127. // lastname: 'Redhead',
  128. // age: '10'
  129. // },
  130. // {
  131. // firstname: 'Kreol',
  132. // lastname: 'Destroyer',
  133. // age: '90'
  134. // },
  135. // {
  136. // firstname: 'Oleg',
  137. // lastname: 'Britva',
  138. // age: '33'
  139. // },
  140. // {
  141. // firstname: 'Crazy',
  142. // lastname: 'Frog',
  143. // age: '58'
  144. // }
  145. // ];
  146. // function nwA() {
  147. // for (var i=1,j=0, newarr = []; i < arr.length; i++, j++) {
  148. // newarr[j] =arr[i];
  149. // }
  150. // console.log(newarr);
  151. // }
  152. // nwA();
  153. // Напишите функцию аналог метода массива push.
  154. // Функция добавляет в конец переданного в параметре массив произвольное количество элементов.
  155. // var arr = [
  156. // {
  157. // firstname: 'John',
  158. // lastname: 'Smith',
  159. // age: '15'
  160. // },
  161. // {
  162. // firstname: 'Tony',
  163. // lastname: 'Stark',
  164. // age: '54'
  165. // },
  166. // {
  167. // firstname: 'Jeck',
  168. // lastname: 'Morris',
  169. // age: '25'
  170. // }
  171. // ];
  172. // function nwA() {
  173. // for (var i=0, newarr = []; arr.length <6; i++, arr.length++) {
  174. // newarr[arr.length] = arr[i];
  175. // }
  176. // console.log(newarr);
  177. // }
  178. // nwA();
  179. // Напишите функцию аналог метода jQuery $.extend. Первый параметр функции - целевой объект,
  180. // поля которого будут изменены или расширены.
  181. // Остальные параметры - объекты-источники, полями которых будет расширяться целевой объект.
  182. // var obj = {};
  183. // var obj1 = {
  184. // orange : 'Апельсин',
  185. // banana : 'Банан'
  186. // };
  187. // var obj2 = {
  188. // carrot : 'Морковка',
  189. // cabbage : 'Капуста'
  190. // }
  191. // var obj3 = {
  192. // meet : 'Мясо',
  193. // fish : 'Рыба'
  194. // }
  195. // debugger;
  196. // function allSourse() {
  197. // for (i=1;i <= 3;i++) {
  198. // if (i=1) {
  199. // for (var key in obj1) {
  200. // obj[key] = obj1[key];
  201. // }
  202. // }
  203. // if (i=2) {
  204. // for (var key in obj2) {
  205. // obj[key] = obj2[key];
  206. // }
  207. // }
  208. // if (i=3) {
  209. // for (var key in obj3) {
  210. // obj[key] = obj3[key];
  211. // }
  212. // }
  213. // }
  214. // console.log(obj);
  215. // }
  216. // allSourse();
  217. // Напишите функцию setComment с параметрами: date, message, author.
  218. // Дата и текст сообщения - обязательные параметры, если какой-то из них или оба отсутствуют,
  219. // то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) о том,
  220. // что данные переданы некорректно. Параметр author - опциональный, но должна происходить проверка:
  221. // если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
  222. // Функция распечатывает на странице текст в формате:
  223. // <имя_автора>, <дата>
  224. // <текст_сообщения>
  225. // function check(author,date,text) {
  226. // var dates = {
  227. // firstData : new Date( new Date().setDate(new Date().getDate()+365*20)),
  228. // secondData : new Date( new Date().setDate(new Date().getDate()-365*40))
  229. // }
  230. // if (author === null){
  231. // author = 'Anonymous';
  232. // }
  233. // if (date === null){
  234. // alert('Incorrect data');
  235. // return;
  236. // } else if ((dates.firstData > date) &&(date > dates.secondData)) {
  237. // date = date;
  238. // } else {
  239. // alert('Incorrect data');
  240. // return;
  241. // }
  242. // if (text === null){
  243. // alert('Enter something');
  244. // return;
  245. // }
  246. // console.log(author + ', ' + date);
  247. // console.log(text);
  248. // }
  249. // check(prompt('Enter a name'), new Date(prompt('Enter date in format YYYY-MM-DD')),text = prompt('Enter something'));
  250. // Создайте объект, описывающий html-разметку. Напишите функцию, которая добавляет разметку в произвольный контейнер на странице.
  251. // var methods = [
  252. // {
  253. // h1: 'Array.prototype.every()',
  254. // tag : 'article',
  255. // p: 'Метод every() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.'},
  256. // {
  257. // h1: 'Array.prototype.some()',
  258. // tag : 'article',
  259. // p: 'Метод some() проверяет, удовлетворяет ли хоть какой-нибудь элемент массива условию, заданному в передаваемой функции.'},
  260. // {
  261. // h1: 'Array.prototype.reduce()',
  262. // tag : 'article',
  263. // p: 'Метод reduce() применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.'},
  264. // {
  265. // h1: 'Array.prototype.reduceRight()',
  266. // tag : 'article',
  267. // p: 'Метод reduceRight() применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.'}
  268. // ];
  269. // function meth() {
  270. // var section = $('<section>').appendTo('body');
  271. // for (i=0;i < methods.length; i++) {
  272. // function article() {
  273. // var $item = $('<article>').appendTo('section');
  274. // $('<h1>').text(methods[i].h1).appendTo($item);
  275. // $('<p>').text(methods[i].p).appendTo($item);
  276. // }
  277. // article(methods[i].h1,methods[i].p);
  278. // }
  279. // }
  280. // meth();
  281. // Используя замыкание, напишите функцию createTimer, которая использует метод performance.now()
  282. // для получения текущей временной метки и служит для замера времени выполнения другого кода:
  283. // function createTimer(){
  284. // return function () {
  285. // return performance.now();
  286. // }
  287. // }
  288. // var timer = createTimer();
  289. // alert('!');
  290. // alert( timer() );
  291. // Используя замыкания, создайте функцию createAdder(),
  292. // которая принимает на вход любой примитивный параметр и возвращает функцию,
  293. // которая добавляет к первому параметру второй. Функция работает по следующему принципу:
  294. // var hello = createAdder('Hello, ');
  295. // alert( hello('John') ); // Hello, John
  296. // alert( hello('Harry') ); // Hello, Harry
  297. // var plus = createAdder(5);
  298. // alert( plus(1) ); // 6
  299. // alert( plus(5) ); // 10
  300. // function createAdder(any) {
  301. // var tt = any;
  302. // arguments[1];
  303. // return function() {
  304. // for (var i = 0; i < 2; i++) {
  305. // return tt + arguments[0];
  306. // }
  307. // }
  308. // }
  309. // var plus = createAdder(5);
  310. // alert( plus(1) ); // 6
  311. // alert( plus(5) ); // 10
  312. // var hello = createAdder('Hello, ');
  313. // alert( hello('John') ); // Hello, John
  314. // alert( hello('Harry') ); // Hello, Harry