Browse Source

task for js 10.08

Entony 7 years ago
parent
commit
bd1eb72554
2 changed files with 337 additions and 0 deletions
  1. 12 0
      10.08.2017/index.html
  2. 325 0
      10.08.2017/js/script.js

+ 12 - 0
10.08.2017/index.html

@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+	<meta charset="UTF-8">
+	<title>first task</title>
+</head>
+<body>
+	<script src="http://code.jquery.com/jquery-3.2.1.min.js"></script>
+	<script src="js/script.js">
+	</script>
+</body>
+</html>

+ 325 - 0
10.08.2017/js/script.js

@@ -0,0 +1,325 @@
+// Напишите функцию max, которая сравнивает два числа и возвращает большее: 
+// function comparison() {
+// 	x = +prompt('Enter first number');
+// 	y = +prompt('Enter second number');
+// 	if (isFinite(x) && isFinite(y)) {
+// 		if (x < y) {
+// 			alert(y + ' > ' + x);
+// 		}else if (y < x) {
+// 			alert(x + ' > ' + y);
+// 		}else alert('values are the same');
+// 	}else alert('Incorrect, not a number');
+// }
+// comparison();
+
+// Напишите функцию-аналог Math.min(). Функция принимает любое количество чисел и возвращает меньшее из них:
+// function min() {
+// 	for (var i = 0, min = arguments[0]; i < arguments.length; i++){
+// 		if (arguments[i] < arguments[0]) {
+// 			min = arguments[i];
+// 		}
+// 	}
+// 	console.log(min);
+// }
+// min(3, 6, 8, 0, -1, 5, 6, 8);
+
+// Изучите перебирающие методы массивов: forEach, filter, map. Создайте массив объектов users (~10 объектов), 
+// каждый объект имеет поля firstname, lastname, age с разными значениями. Используя встроенные функции массивов:	
+// Отфильтруйте пользователей младше 18 лет
+// Добавьте каждому объекту поле fullName, которое является конкатенацией имени и фамилии
+// Сформируйте новый массив, который содержит только полное имя пользователей
+// debugger;
+// var arr = [
+// 	{
+// 		firstname: 'John',
+// 		lastname: 'Smith',
+// 		age: '15'
+// 	},
+// 	{
+// 		firstname: 'Tony',
+// 		lastname: 'Stark',
+// 		age: '54'
+// 	},
+// 	{
+// 		firstname: 'Jeck',
+// 		lastname: 'Morris',
+// 		age: '25'
+// 	},
+// 	{
+// 		firstname: 'Anthony',
+// 		lastname: 'Montana',
+// 		age: '34'
+// 	},
+// 	{
+// 		firstname: 'Gregory',
+// 		lastname: 'Guck',
+// 		age: '14'
+// 	},
+// 	{
+// 		firstname: 'Joffry',
+// 		lastname: 'Barateon',
+// 		age: '19'
+// 	},
+// 		{
+// 		firstname: 'Sansa',
+// 		lastname: 'Redhead',
+// 		age: '10'
+// 	},
+// 	{
+// 		firstname: 'Kreol',
+// 		lastname: 'Destroyer',
+// 		age: '90'
+// 	},
+// 	{
+// 		firstname: 'Oleg',
+// 		lastname: 'Britva',
+// 		age: '33'
+// 	},
+// 		{
+// 		firstname: 'Crazy',
+// 		lastname: 'Frog',
+// 		age: '58'
+// 	}
+// ];
+// var more18 = arr.filter(function(item, i, age){
+// 		return arr[i].age > 18;
+// })
+// var add = function(){}
+// 	for (var i=0; i < arr.length;i++) {
+// 		var fullName = arr[i].firstname + ' ' + arr[i].lastname;
+// 		arr[i].fullName = fullName;
+// };
+// var full = arr.map(function(item){
+// 	return item.fullName;
+// });
+
+// Напишите функцию аналог метода массива shift. Функция удаляет из переданного в параметре массива первый элемент.
+// var arr = [
+// 	{
+// 		firstname: 'John',
+// 		lastname: 'Smith',
+// 		age: '15'
+// 	},
+// 	{
+// 		firstname: 'Tony',
+// 		lastname: 'Stark',
+// 		age: '54'
+// 	},
+// 	{
+// 		firstname: 'Jeck',
+// 		lastname: 'Morris',
+// 		age: '25'
+// 	},
+// 	{
+// 		firstname: 'Anthony',
+// 		lastname: 'Montana',
+// 		age: '34'
+// 	},
+// 	{
+// 		firstname: 'Gregory',
+// 		lastname: 'Guck',
+// 		age: '14'
+// 	},
+// 	{
+// 		firstname: 'Joffry',
+// 		lastname: 'Barateon',
+// 		age: '19'
+// 	},
+// 		{
+// 		firstname: 'Sansa',
+// 		lastname: 'Redhead',
+// 		age: '10'
+// 	},
+// 	{
+// 		firstname: 'Kreol',
+// 		lastname: 'Destroyer',
+// 		age: '90'
+// 	},
+// 	{
+// 		firstname: 'Oleg',
+// 		lastname: 'Britva',
+// 		age: '33'
+// 	},
+// 		{
+// 		firstname: 'Crazy',
+// 		lastname: 'Frog',
+// 		age: '58'
+// 	}
+// ];
+// function nwA() {
+// 	for (var i=1,j=0, newarr = []; i < arr.length; i++, j++) {
+// 			newarr[j] =arr[i]; 
+// 	}
+// 	console.log(newarr);
+// }
+// nwA();
+
+// Напишите функцию аналог метода массива push.
+// Функция добавляет в конец переданного в параметре массив произвольное количество элементов.
+// var arr = [
+// 	{
+// 		firstname: 'John',
+// 		lastname: 'Smith',
+// 		age: '15'
+// 	},
+// 	{
+// 		firstname: 'Tony',
+// 		lastname: 'Stark',
+// 		age: '54'
+// 	},
+// 	{
+// 		firstname: 'Jeck',
+// 		lastname: 'Morris',
+// 		age: '25'
+// 	}
+// ];
+// function nwA() {
+// 	for (var i=0, newarr = []; arr.length <6; i++, arr.length++) {
+// 		newarr[arr.length] = arr[i]; 
+// 	}
+// 	console.log(newarr);
+// }
+// nwA();
+
+// Напишите функцию аналог метода jQuery $.extend. Первый параметр функции - целевой объект, 
+// поля которого будут изменены или расширены. 
+// Остальные параметры - объекты-источники, полями которых будет расширяться целевой объект.
+// var obj = {};
+// var obj1 = {
+// 	orange : 'Апельсин',
+// 	banana : 'Банан'
+// };
+// var obj2 = {
+// 	carrot : 'Морковка',
+// 	cabbage : 'Капуста'
+// }
+// var obj3 = {
+// 	meet : 'Мясо',
+// 	fish : 'Рыба'
+// }
+// debugger;
+// function allSourse() {
+// 	for (i=1;i <= 3;i++) {
+// 		if (i=1) {
+// 			for (var key in obj1) {
+// 			obj[key] = obj1[key];
+// 			}
+// 		}
+// 		if (i=2) {
+// 			for (var key in obj2) {
+// 			obj[key] = obj2[key];
+// 			}
+// 		}
+// 		if (i=3) {
+// 			for (var key in obj3) {
+// 			obj[key] = obj3[key];
+// 			}
+// 		}
+// 	}
+// 	console.log(obj);
+// }
+// allSourse();
+
+// Напишите функцию setComment с параметрами: date, message, author. 
+// Дата и текст сообщения - обязательные параметры, если какой-то из них или оба отсутствуют, 
+// то выполнение функции должно обрываться, а пользователю выдаваться предупреждение (alert) о том, 
+// что данные переданы некорректно. Параметр author - опциональный, но должна происходить проверка: 
+// если параметр не передан, то вместо него подставляется значение ‘Anonymous’.
+// Функция распечатывает на странице текст в формате: 
+// 				<имя_автора>, <дата>
+// 				<текст_сообщения>
+// function check(author,date,text) {
+// 	var dates = {
+// 	firstData : new Date( new Date().setDate(new Date().getDate()+365*20)),
+// 	secondData : new Date( new Date().setDate(new Date().getDate()-365*40))
+// 	}
+// 	if (author === null){ 
+// 		author = 'Anonymous';
+// 		}
+// 	if (date === null){
+// 		alert('Incorrect data');
+// 		return;
+// 	} else if ((dates.firstData > date) &&(date > dates.secondData)) {
+// 		date = date;
+// 	} else {
+// 		alert('Incorrect data');
+// 		return;
+// 	}
+// 	if (text === null){
+// 		alert('Enter something');
+// 		return;
+// 	}
+// 	console.log(author + ', ' + date);
+// 	console.log(text);
+// }
+// check(prompt('Enter a name'), new Date(prompt('Enter date in format  YYYY-MM-DD')),text = prompt('Enter something'));
+
+// Создайте объект, описывающий html-разметку. Напишите функцию, которая добавляет разметку в произвольный контейнер на странице.
+// var methods = [
+// 	{
+// 		h1: 'Array.prototype.every()', 
+// 		tag : 'article',
+// 		p: 'Метод every() проверяет, удовлетворяют ли все элементы массива условию, заданному в передаваемой функции.'},
+// 	{
+// 		h1: 'Array.prototype.some()', 
+// 		tag : 'article',
+// 		p: 'Метод some() проверяет, удовлетворяет ли хоть какой-нибудь элемент массива условию, заданному в передаваемой функции.'},
+// 	{
+// 		h1: 'Array.prototype.reduce()', 
+// 		tag : 'article',
+// 		p: 'Метод reduce() применяет функцию к аккумулятору и каждому значению массива (слева-направо), сводя его к одному значению.'},
+// 	{
+// 		h1: 'Array.prototype.reduceRight()',
+// 		tag : 'article', 
+// 		p: 'Метод reduceRight() применяет функцию к аккумулятору и каждому значению массива (справа-налево), сводя его к одному значению.'}
+// ];
+// function meth() {
+// 	var section = $('<section>').appendTo('body');
+// 	for (i=0;i < methods.length; i++) {
+// 		function article() {
+// 			var $item = $('<article>').appendTo('section');
+// 			$('<h1>').text(methods[i].h1).appendTo($item);
+// 			$('<p>').text(methods[i].p).appendTo($item);
+// 		}
+// 		article(methods[i].h1,methods[i].p);
+// 	}
+// }
+// meth();
+
+// Используя замыкание, напишите функцию createTimer, которая использует метод performance.now() 
+// для получения текущей временной метки и служит для замера времени выполнения другого кода:
+// function createTimer(){
+// 	return function () {
+// 		return performance.now();
+// 	}
+// }
+// var timer = createTimer();
+// alert('!');
+// alert( timer() );
+
+// Используя замыкания, создайте функцию createAdder(), 
+// которая принимает на вход любой примитивный параметр и возвращает функцию, 
+// которая добавляет к первому параметру второй. Функция работает по следующему принципу:
+// 				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
+
+// function createAdder(any) {
+// 	var tt = any;
+// 	arguments[1];
+// 	return function() {
+// 		  for (var i = 0; i < 2; i++) {
+//         return tt + arguments[0]; 
+//     }
+// 	}
+	
+// }
+// var plus = createAdder(5);
+// alert( plus(1) ); // 6
+// alert( plus(5) ); // 10
+// var hello = createAdder('Hello, ');
+// alert( hello('John') ); // Hello, John
+// alert( hello('Harry') ); // Hello, Harry