123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- /* 1. Напишите функцию a, которая будет служить коротким именем для alert,
- то есть выводит пользовательское сообщение в стандартном модальном окне.
- Напишите функцию d, которая будет служить коротким именем для debugger,
- то есть запускает процесс отладки.*/
- function a(mess) {
- alert(mess);
- }
- function d() {
- debugger;
- }
- /* 2. Напишите функцию max, которая сравнивает два числа и возвращает большее. */
- function max (a,b) {
- if (a>b) {
- return a
- } else {
- return b}
- }
- console.log (max(3, 4)) // 4
- /* 3. Напишите функцию-аналог Math.min().
- Функция принимает любое количество чисел и возвращает меньшее из них. */
- function min () {
- var arr = arguments;
- var x = arr[0];
- for (var j = 1; j < arr.length; j++) {
- if (arr[j] < x) x = arr[j];
- }
- return x;
- }
- console.log (min(301, 40, 8, 12, 63)) // 8
- /* 4. Изучите перебирающие методы массивов: forEach, filter, map.
- Создайте массив объектов users (~10 объектов),
- каждый объект имеет поля firstname, lastname, age с разными значениями,
- у некоторых есть поле middlename.
- Используя встроенные функции массивов:
- Отфильтруйте пользователей младше 18 лет
- Добавьте каждому объекту поле fullName,
- которое является конкатенацией firstname, middlename и lastname,
- если есть все три, и только firstname и lastname, если middlename нет
- Сформируйте новый массив,
- который содержит только полное имя пользователей.*/
- var users = [
- {firstname: 'Slava', lastname: 'Ilchenko', age: '39' },
- {firstname: 'Ivan', lastname: 'Ivanov', age: '23' },
- {firstname: 'Vasya', middlename: 'Petrovich', lastname: 'Vasilenko', age: '26' },
- {firstname: 'Mariya', middlename: 'Albertovna', lastname: 'Rebenko', age: '16' },
- {firstname: 'German', lastname: 'Vetrov', age: '14' },
- {firstname: 'Lidiya', middlename: 'Victorovna', lastname: 'Bebenko', age: '30' },
- {firstname: 'Victor', lastname: 'Gogol', age: '17' },
- {firstname: 'Victoriya', middlename: 'Rudolfovna', lastname: 'Gnatova', age: '27' },
- {firstname: 'Fedor', lastname: 'Konev', age: '15' },
- {firstname: 'Julia', middlename: 'Nilovaevna', lastname: 'Bern', age: '20' }
- ]
- var arrfilter = users.filter (function(users) {
- return users.age < 18;
- });
- console.log (arrfilter);
- // {firstname: "Mariya", middlename: "Albertovna", lastname: "Rebenko", age: "16"}
- // {firstname: "German", lastname: "Vetrov", age: "14"}
- // {firstname: "Victor", lastname: "Gogol", age: "17"}
- // {firstname: "Fedor", lastname: "Konev", age: "15"}
- users.forEach (function(user, i, users) {
- if ('middlename' in users[i]) {
- user.fullName = user.firstname+' ' + user.middlename + ' ' + user.lastname;
- } else {user.fullName = user.firstname+' ' +user.lastname;}
- });
- console.log(users);
- // 0: {firstname: "Slava", lastname: "Ilchenko", age: "39", fullName: "Slava Ilchenko"}
- // 1: {firstname: "Ivan", lastname: "Ivanov", age: "23", fullName: "Ivan Ivanov"}
- // 2: {firstname: "Vasya", middlename: "Petrovich", lastname: "Vasilenko", age: "26", fullName: "Vasya Petrovich Vasilenko"}
- // 3: {firstname: "Mariya", middlename: "Albertovna", lastname: "Rebenko", age: "16", fullName: "Mariya Albertovna Rebenko"}
- // 4: {firstname: "German", lastname: "Vetrov", age: "14", fullName: "German Vetrov"}
- // 5: {firstname: "Lidiya", middlename: "Victorovna", lastname: "Bebenko", age: "30", fullName: "Lidiya Victorovna Bebenko"}
- // 6: {firstname: "Victor", lastname: "Gogol", age: "17", fullName: "Victor Gogol"}
- // 7: {firstname: "Victoriya", middlename: "Rudolfovna", lastname: "Gnatova", age: "27", fullName: "Victoriya Rudolfovna Gnatova"}
- // 8: {firstname: "Fedor", lastname: "Konev", age: "15", fullName: "Fedor Konev"}
- // 9: {firstname: "Julia", middlename: "Nilovaevna", lastname: "Bern", age: "20", fullName: "Julia Nilovaevna Bern"}
- var results = users.map (function(user, i, users) {
- return user.fullName;
- });
- console.log(results);
- // 0: "Slava Ilchenko"
- // 1: "Ivan Ivanov"
- // 2: "Vasya Petrovich Vasilenko"
- // 3: "Mariya Albertovna Rebenko"
- // 4: "German Vetrov"
- // 5: "Lidiya Victorovna Bebenko"
- // 6: "Victor Gogol"
- // 7: "Victoriya Rudolfovna Gnatova"
- // 8: "Fedor Konev"
- // 9: "Julia Nilovaevna Bern"
- /* 5. Напишите функцию аналог метода массива shift.
- Функция удаляет из переданного в параметре массива
- первый элемент и возвращает новый массив.*/
- function del () {
- var arr = arguments;
- var myarr = [];
- for (var j = 1, i=0; j < arr.length; j++, i++) {
- myarr [i]=arr[j];
- }
-
- return myarr;
-
- }
- console.log (del('ttt', 40, 8, 12, 63)) // (4) [40, 8, "54fgh", 63]
-
- /* 6. Напишите функцию аналог метода массива push.
- Функция добавляет в конец переданного в параметре массив
- произвольное количество элементов. */
- function pp (arr, arrplus) {
- n = arr.length+arrplus.length;
- var newarr = new Array (n);
- for (var i=0, k=0; k < arr.length; i++, k++) {
- newarr [k] = arr [i];
- }
- for (var j=0, k=arr.length; k < n; j++, k++) {
- newarr [k] = arrplus [j];
- }
- return newarr;
-
- }
- var arr = [43, 56, 8+7, 66, 90];
- var arrplus = [1, 4, 7, 'tgf'];
- console.log (pp(arr, arrplus)); // (9) [43, 56, 15, 66, 90, 1, 4, 7, "tgf"]
- /* 7. Напишите функцию аналог метода jQuery $.extend. && source.hasOwnProperty(property)
- Первый параметр функции - целевой объект, поля которого будут
- изменены или расширены. Остальные параметры - объекты-источники,
- полями которых будет расширяться целевой объект.*/
- function extend (obj) {
- for(i=1; i < arguments.length; i++) {
- var source = arguments[i];
-
- for (var property in source) {
- obj[property] = source[property];
- }
-
- }
- return obj;
- };
- var source = {firstname: 'Slava', city: 'Kharkov', age: 10}
- var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'}, {dateofbirth: '1978-11-21'});
- console.log(source); // Object {firstname: "John", city: "Kharkov", age: 10, lastname: "Doe", dateofbirth: "1978-11-21"}
- console.log(s); // Object {firstname: "John", city: "Kharkov", age: 10, lastname: "Doe", dateofbirth: "1978-11-21"}
- /* 8. Напишите функцию setComment с параметрами:
- date, message, author. Дата и текст сообщения - обязательные параметры,
- если какой-то из них или оба отсутствуют, то выполнение функции
- должно обрываться, а пользователю выдаваться предупреждение (alert) о том,
- что данные переданы некорректно.
- Параметр author - опциональный, но должна происходить проверка:
- если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
- Функция распечатывает на странице текст в формате:
- <имя_автора>, <дата>
- <текст_сообщения> */
- function setComment (date, message, author) {
- if (!(author)) {
- author = 'Anonymous';}
- if ((!(date) || !(message)) || (!(date) && !(message))) {
- alert ('Работа функции не возможна');
- } else {
- $("body").toggleClass("comment");
- $('.comment').append("<h3>");
- $('h3').append(author,', ', date);
- $('.comment').append("<p>");
- $('.comment p').append(message);
- $('.comment').css({'padding': '0 10px', 'border': '1px solid black',
- 'width': '25%', 'margin': '0 auto'});
- $('.comment').append("</br>");
- }
- }
- setComment ('2018-05-02', 'Здрасти я ваша тетя', 'Slava');
- /*9. Используя замыкание, напишите функцию createTimer,
- которая использует метод performance.now() для получения текущей
- временной метки и служит для замера времени выполнения другого кода. */
- function createTimer () {
- var t0 = performance.now();
- return function() {
- var t1 = performance.now();
- var timer = t1 - t0;
- return timer;
- }
- }
- var timer = createTimer();
- alert('!11111') // код, время выполнения которого нужно измерить
- alert( timer() + ' мкс'); // время в мкс от начала выполнения createTimer() до момента вызова timer()
- /* 10. Используя замыкания, создайте функцию createAdder(),
- которая принимает на вход любой примитивный параметр
- и возвращает функцию,
- которая добавляет к первому параметру второй.*/
- function createAdder (a) {
- return function (b) {
- return (a+b);
- }
- }
- var hello = createAdder('Hello, ');
- alert( hello('Ivan') ); // Hello, Ivan
- alert( hello('Vasya') ); // Hello, Vasya
- var plus = createAdder(62);
- alert( plus(11) ); // 73
- alert( plus(15) ); // 77
|