// 1. Напишите функцию a, которая будет служить коротким именем для alert, то есть выводит пользовательское сообщение в стандартном модальном окне. // Напишите функцию d, которая будет служить коротким именем для debugger, то есть запускает процесс отладки. // : 5 // : 2 function a(greeting) { alert('Hello'); } function d() { debugger; } a('Hello'); d(); a('World'); // 2. Напишите функцию max, которая сравнивает два числа и возвращает большее: // : 10 // : 3 function max (x,y) { if(x < y){ alert(y); }else if (y < x){ alert(x); } } consol.log(max(0,-1)); // 3. Напишите функцию-аналог Math.min(). Функция принимает любое количество чисел и возвращает меньшее из них: // : 20 // : function min() { var min = arguments[0]; for(var i = 1; i < arguments.length; i++) { if(arguments[i] < min) { min = arguments[i]; } } return min; } // 4. Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов), каждый объект имеет поля firstname, lastname, age с разными значениями, // у некоторых есть поле middlename. Используя встроенные функции массивов: //Отфильтруйте пользователей младше 18 лет //Добавьте каждому объекту поле fullName, которое является конкатенацией firstname, middlename и lastname, если есть все три, и только firstname и lastname, если middlename нет // Сформируйте новый массив, который содержит только полное имя пользователей // : 30 // : 50 var users = [ { firstname : 'Nikita', middlename : 'Nik', lastname : 'Malko', age : 23, }, { firstname : 'Maksim', middlename : 'Bob', lastname : 'Burlaka', age : 20, }, { firstname : 'Maks', middlename : 'Sema', lastname : 'Semin', age : 23, }, { firstname : 'Ivan', lastname : 'Seleznev', age : 5, }, { firstname : 'Alina', lastname : 'Osadchay', age : 20, }, { firstname : 'Alisa', lastname : 'Selezneva', age : 12, }, { firstname : 'Alexey', lastname : 'Litvin', age : 21, }, { firstname : 'Stefan', lastname : 'Fursov', age : 8, }, { firstname : 'Kira', lastname : 'Fursova', age : 4, }, { firstname : 'Alina', lastname : 'Burluckay', age : 20, }, { firstname : 'Marina', lastname : 'Selezneva', age : 38, }, ]; var a = users.filter(function(users) { return filterAge.age > 18; }); var b = users.forEach(function(users){ users.fullName = users.firstname + ' ' + users.lastname + ' ' + users.middlename; if (users.middlename === undefined){ users.fullName = users.firstname + ' ' +users.lastname; } }); // 5. Напишите функцию аналог метода массива shift. Функция удаляет из переданного в параметре массива первый элемент и возвращает новый массив. // : 30 // : 15 var delFirst = function (arr){ arr.shift(); } arr = ['aaspflas','as','asdlas','asldasl'] delFirst(arr); // 6. Напишите функцию аналог метода массива push. Функция добавляет в конец переданного в параметре массив произвольное количество элементов. // : 20 // : 25 var pussy = function (arr){ arr.push(Math.ceil(Math.random() * 10)); return arr; } pussy([10,3231,412412]); // 7. Напишите функцию аналог метода jQuery $.extend. Первый параметр функции - целевой объект, поля которого будут изменены или расширены. Остальные параметры - // объекты-источники, полями которых будет расширяться целевой объект. // var source = {firstname: 'Tom', age: 10} // var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'}); // console.log(source); // {firstname: 'John', age: 10, lastname: 'Doe'} // console.log(s); // {firstname: 'John', age: 10, lastname: 'Doe'} // : 20 // : 15 var source = {firstname: 'Tom', age: 10} function extend(firstObj, obj1, obj2){ var a = $.extend(obj1,obj2); return $.extend(firstObj,a); } var s = extend(source, {firstname: 'John'}, {lastname: 'Doe'}); console.log(source); console.log(s); // 8.Напишите функцию setComment с параметрами: date, message, author. Дата и текст сообщения - обязательные параметры, если какой-то из них или оба отсутствуют, // то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) о том, что данные переданы некорректно. Параметр author - опциональный, // но должна происходить проверка: если параметр не передан, то вместо него подставляется значение ‘Anonymous’. Функция распечатывает на странице текст в формате: // <имя_автора>, <дата> // <текст_сообщения> // : 15 // : 10 function setComment(date, message, author){ if (date === undefined) return; if (message === undefined) return; if (author === undefined) { author = 'Anonymous'; }; return alert(author + ' ' + date + '\n' + message); } setComment('2016-11-02', 'Everything is ok', 'John'); setComment('2016-11-02', 'You could do it better!'); // ЗАМЫКАНИЕ // 9. Используя замыкание, напишите функцию createTimer, которая использует метод performance.now() для получения текущей временной метки и служит для замера времени выполнения // другого кода: // // function createTimer () { var firstTime = performance.now(); return function secondCreateTime () { return performance.now() - firstTime; } } var timer = createTimer(); alert('!') // код, время выполнения которого нужно измерить alert( timer() ); // время в мкс от начала выполнения createTimer() до момента вызова timer() // 10. Используя замыкания, создайте функцию createAdder(), которая принимает на вход любой примитивный параметр и возвращает функцию, которая добавляет к первому параметру второй. // Функция работает по следующему принципу: // : 20 // : function createAdder(args) { return function secondCreateAdder(args2){ return args + args2; } } var hello = createAdder('Hello, '); alert( hello('John') ); // Hello, John alert( hello('Harry') ); // Hello, Harry var plus = createAdder(5); alert( plus(1) ); // 6 alert( plus(5) ); // 10