|
@@ -1,333 +0,0 @@
|
|
-$(document).ready(function() {
|
|
|
|
-
|
|
|
|
- $(".button").css({ // Стилизация кнопки для запуска задач
|
|
|
|
- "display": "inline-block",
|
|
|
|
- "background": "grey",
|
|
|
|
- "cursor": "pointer",
|
|
|
|
- "padding": "10px",
|
|
|
|
- "margin": "20px 0 0 20px",
|
|
|
|
- "border-radius": "10px",
|
|
|
|
- "color": "white"
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
- $(".task").css({
|
|
|
|
- "width": "50%",
|
|
|
|
- "border-bottom": "1px solid black",
|
|
|
|
- "box-sizing": "border-box",
|
|
|
|
- "padding": "10px"
|
|
|
|
- });
|
|
|
|
-
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// Задачки
|
|
|
|
-
|
|
|
|
-function exercises(par) {
|
|
|
|
-
|
|
|
|
- var arr = [task_1, task_2, task_3, task_4, task_5, task_6, task_7, task_8, task_9];
|
|
|
|
-
|
|
|
|
- arr[par-1]();
|
|
|
|
-
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 1. Напишите функцию a, которая будет служить коротким именем для alert,
|
|
|
|
-// то есть выводит пользовательское сообщение в стандартном модальном окне.
|
|
|
|
-// Напишите функцию d, которая будет служить коротким именем для debugger,
|
|
|
|
-// то есть запускает процесс отладки.
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-function a(message) {
|
|
|
|
-
|
|
|
|
- alert(message);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-function d() {
|
|
|
|
- debugger;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 2. Напишите функцию max, которая сравнивает два числа и возвращает большее:
|
|
|
|
-
|
|
|
|
-function max(a,b) {
|
|
|
|
- return a > b ? a : b;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 3. Напишите функцию-аналог Math.min().
|
|
|
|
-// Функция принимает любое количество чисел и возвращает меньшее из них:
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-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. Используя встроенные функции массивов:
|
|
|
|
-
|
|
|
|
-// a. Отфильтруйте пользователей младше 18 лет
|
|
|
|
-// b. Добавьте каждому объекту поле fullName, которое является конкатенацией firstname, middlename и lastname,
|
|
|
|
-// если есть все три, и только firstname и lastname, если middlename нет
|
|
|
|
-// c. Сформируйте новый массив, который содержит только полное имя пользователей
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-var user_1 = {
|
|
|
|
- firstname: "Joe",
|
|
|
|
- lastname: "Cocker",
|
|
|
|
- age: 13
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_2 = {
|
|
|
|
- firstname: "Michael",
|
|
|
|
- lastname: "jackson",
|
|
|
|
- age: 35
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_3 = {
|
|
|
|
- firstname: "Elvis",
|
|
|
|
- middlename: "Aaron",
|
|
|
|
- lastname: "Presley",
|
|
|
|
- age: 50
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_4 = {
|
|
|
|
- firstname: "Ray",
|
|
|
|
- lastname: "Charles",
|
|
|
|
- age: 10
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_5 = {
|
|
|
|
- firstname: "James",
|
|
|
|
- lastname: "Brown",
|
|
|
|
- age: 18
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_6 = {
|
|
|
|
- firstname: "Chuck",
|
|
|
|
- middlename: "Edward",
|
|
|
|
- lastname: "Berry",
|
|
|
|
- age: 14
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_7 = {
|
|
|
|
- firstname: "Eick",
|
|
|
|
- lastname: "Claptric",
|
|
|
|
- middlename: "Patron",
|
|
|
|
- age: 43
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_8 = {
|
|
|
|
- firstname: "BB",
|
|
|
|
- lastname: "King",
|
|
|
|
- age: 16
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_9 = {
|
|
|
|
- firstname: "Freddie",
|
|
|
|
- lastname: "Mercury",
|
|
|
|
- age: 33
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var user_10 = {
|
|
|
|
- firstname: "Yngwie",
|
|
|
|
- lastname: "Malmsteen",
|
|
|
|
- age: 45
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-var arr = [user_1, user_2, user_3, user_4, user_5, user_6, user_7, user_8, user_9, user_10];
|
|
|
|
-
|
|
|
|
-// сортируем пользователей с возрастом < 18
|
|
|
|
-var a = arr.filter( function(obj){
|
|
|
|
-
|
|
|
|
- return obj.age < 18;
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-// добавляем поле middlename
|
|
|
|
-arr.forEach(function(obj) {
|
|
|
|
-
|
|
|
|
- if (obj.middlename) {
|
|
|
|
- obj.fullname = obj.firstname + " " + obj.middlename +" " + obj.lastname;
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- obj.fullname = obj.firstname + " " + obj.lastname;
|
|
|
|
- }
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-// формируем новый массив который содержит только полное имя
|
|
|
|
-
|
|
|
|
-var arr2 = arr.map( function(obj) {
|
|
|
|
-
|
|
|
|
- return obj.fullname;
|
|
|
|
-});
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 5. Напишите функцию аналог метода массива shift. Функция удаляет из переданного
|
|
|
|
-// в параметре массива первый элемент и возвращает новый массив.
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-function shift(arr) {
|
|
|
|
-
|
|
|
|
- var arr2 = [];
|
|
|
|
-
|
|
|
|
- for(var i = 1; i < arr.length; i++) {
|
|
|
|
- arr2[i-1] = arr[i];
|
|
|
|
- }
|
|
|
|
- return arr2;
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-shift([1,2,3,4]);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 6. Напишите функцию аналог метода массива push. Функция добавляет в конец переданного
|
|
|
|
-// в параметре массивa произвольное количество элементов.
|
|
|
|
-
|
|
|
|
-var arr1 = [1,2,3,4];
|
|
|
|
-
|
|
|
|
-function push(arr) {
|
|
|
|
-
|
|
|
|
- var arr2 = arr;
|
|
|
|
-
|
|
|
|
- for(var i = 0; i < arguments.length; i++) {
|
|
|
|
-
|
|
|
|
- arr2[arr2.length] = arguments[i+1];
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return arr2;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-push(arr1, 5, 6, 7, 8);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 7. Напишите функцию аналог метода jQuery $.extend. Первый параметр
|
|
|
|
-// функции - целевой объект, поля которого будут изменены или расширены.
|
|
|
|
-// Остальные параметры - объекты-источники, полями которых будет расширяться целевой объект.
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-var myInfo = {
|
|
|
|
- name: "Oleg",
|
|
|
|
- lastName: "Kriuchkov",
|
|
|
|
- skills: {
|
|
|
|
- guitar: "pro",
|
|
|
|
- games: "pro"
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var extraInfo = {
|
|
|
|
- skills: {
|
|
|
|
- cooking: "pro"
|
|
|
|
- },
|
|
|
|
- age: 24
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-function extend(obj) { // obj_1 - Целевой объект. Объекты-источники берутся из arguments.
|
|
|
|
-
|
|
|
|
- for(var i = 1; i < arguments.length; i++) {
|
|
|
|
-
|
|
|
|
- for(var key in arguments[i]) {
|
|
|
|
-
|
|
|
|
- if (obj[key] && typeof obj[key] == "object") {
|
|
|
|
-
|
|
|
|
- for(var extraKey in arguments[i][key]) {
|
|
|
|
-
|
|
|
|
- obj[key][extraKey] = arguments[i][key][extraKey];
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
-
|
|
|
|
- obj[key] = arguments[i][key];
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- return obj;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-extend(myInfo, extraInfo);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 8. Напишите функцию setComment с параметрами: date, message, author. Дата и текст
|
|
|
|
-// сообщения - обязательные параметры, если какой-то из них или оба отсутствуют,
|
|
|
|
-// то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert)
|
|
|
|
-// о том, что данные переданы некорректно. Параметр author - опциональный, но должна
|
|
|
|
-// происходить проверка: если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
|
|
|
|
-// Функция распечатывает на странице текст в формате:
|
|
|
|
-// <имя_автора>, <дата>
|
|
|
|
-// <текст_сообщения>
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-function setComment(date, message, author) {
|
|
|
|
-
|
|
|
|
- if(!date || !message) {
|
|
|
|
- return alert("Данные переданы некорректно.");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- !author? author=author : author = "Anonymous";
|
|
|
|
-
|
|
|
|
- $("#task8").append("<div><span>"+author+", "+date+"</span><br><span>"+message+"</div>");
|
|
|
|
- $("#task8 div span:first-child").css({"font-weight": "800"});
|
|
|
|
-};
|
|
|
|
-
|
|
|
|
-setComment("2016-11-02", "Everything is ok", "John");
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 9. Используя замыкание, напишите функцию createTimer, которая использует метод
|
|
|
|
-// performance.now() для получения текущей временной метки и служит для замера
|
|
|
|
-// времени выполнения другого кода:
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-function createTimer() {
|
|
|
|
-
|
|
|
|
- var t = performance.now();
|
|
|
|
-
|
|
|
|
- return function () {
|
|
|
|
- return performance.now() - t;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-var timer = createTimer();
|
|
|
|
-alert('!')
|
|
|
|
-alert( timer() );
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// 10. Используя замыкания, создайте функцию createAdder(), которая принимает на вход
|
|
|
|
-// любой примитивный параметр и возвращает функцию, которая добавляет к первому параметру
|
|
|
|
-// второй.
|
|
|
|
-
|
|
|
|
-function createAdder(arg1) {
|
|
|
|
-
|
|
|
|
- return function (arg2) {
|
|
|
|
-
|
|
|
|
- return arg1 + arg2;
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|