Entony 7 lat temu
commit
abd69f349f
2 zmienionych plików z 161 dodań i 0 usunięć
  1. 12 0
      index.html
  2. 149 0
      js/script.js

+ 12 - 0
index.html

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

+ 149 - 0
js/script.js

@@ -0,0 +1,149 @@
+// ------------------------------1--------------------------------------
+// Напишите функцию, которая в объекте меняет местами ключи и значения:
+
+var obj = {
+    'name': 'John',
+    'email': 'john@mail.com'
+};
+
+function reverse(val) {
+	obj = val;
+	for (var key in obj) {
+    	obj[obj[key]] = key;
+    	delete obj[key] ;
+	}
+	return obj;
+}
+reverse(obj);
+console.log(obj); // {'John': 'name', 'john@mail.com': 'email'}
+
+// ------------------------------2--------------------------------------
+// Напишите функцию-аналог splice, не используя никакие методы массива:
+// var arr = [1, 2, 4, 3];
+// arr = splice(arr, 2, 1);
+// console.log(arr); // [1, 2, 3]
+// arr = splice(arr, 2, 0, 100, 200, 300);
+// console.log(arr); // [1, 2, 100, 200, 300, 3]
+
+var arr = [1, 2, 4, 3, 6, 7, 9, 8];
+function splice(arr) {
+
+	var arrArguments = [];
+	for (i=0; i < arguments.length; i++) {
+		arrArguments[i] = arguments[i];
+	}
+	// debugger;
+if (arrArguments[2] >= 1) {
+	for (var i = 0, j = 0, nwarr = []; j < (arr.length - arrArguments[2]) + (arrArguments.length - 3); i++, j++) {
+    	nwarr[j] = arr[i];
+    	if ( (i == arrArguments[1]) && (arrArguments.length > 3) ) {
+    		nwarr[j] = arrArguments[3];
+    		for (a = 4, b = 0; b < arrArguments.length - 3;a++, b++) {
+    			j++;
+    			nwarr[j] = arrArguments[a];
+    		}
+    	}
+    	if (i == arrArguments[1]) {
+    		nwarr[j] = arr[i+(arr.length - (arr.length - arrArguments[2]) )];
+    		i= i + (arr.length - (arr.length - arrArguments[2]) );
+    		
+   	 	}
+	}
+}else if (arrArguments[2] == 0) {
+	for (var i = 0, j = 0, nwarr = []; j < (arr.length - arrArguments[2]) + (arrArguments.length - 4); i++, j++) {
+		nwarr[j] = arr[i];
+		if (i == arrArguments[1]) {
+			nwarr[j] = arrArguments[3];
+ 			for (var a=4; a < arrArguments.length; a++) {
+				j++;
+				nwarr[j] = arrArguments[a];
+			}
+		}
+	}
+}
+arr = nwarr;
+return console.log(arr);
+}
+splice(arr, 2, 4);
+splice(arr, 2, 4, 599, 377, 5, 7777);
+splice(arr, 2, 0, 100, 200, 300); 
+
+// ------------------------------3--------------------------------------
+// Напишите функцию, которая возвращает сумму всех чисел, переданных в качестве аргументов, 
+// число которых не ограничено. Функция работает только с числами (включая строковые). 
+// Если какой-то из параметров - массив, то к сумме добавляется также сумма значений этого массива 
+// (если какое-либо из значений этого массива также является массивом, то к результату добавляется 
+// также и сумма его значений, и так далее).
+// var sum = getSum(1, '1', 'one', [2, '2', 'two']);
+// console.log( sum ); // 6
+
+function sum() {
+	var summ = 0;
+	for(var i=0; i < arguments.length; i++){
+		if (isFinite(arguments[i])) {
+  			summ+= +arguments[i];
+  		}else if (arguments[i] instanceof Array ) {
+			summ += sum.apply(null, arguments[i])
+		}
+	}
+	return summ;
+}
+console.log( sum(1, '1', 'one', [2, '2', [2, '2', 'two'], 'two'], 1, 4, [2, '2', 'two'], 7) );
+
+// ------------------------------4--------------------------------------
+// Напишите функцию, которая отрисовывает древовидный список ul li из предоставленной структуры любой глубины вложенности. 
+// Где рисовать меню определяется в параметрах функции, если DOM-элемент не был передан, то дерево рисуется в body:
+// var data = [1, [21, 22, 23], 3, [41, [421, 422]], 5];
+// recursiveTree(data);                              <--------самое злое задание, время выполнения 100500 часов
+
+var data = [1, [21, 22, 23], 3, [41, [421, 422]], 5];
+var $item = $('<div>').prependTo('body');
+
+function recursiveTree(arr, place) {
+	place = place || 'body';
+
+	var $ul =$('<ul>').appendTo(place);
+
+	for(var i=0; i < arr.length; i++){
+		if ( typeof arr[i] !== "object") {
+			$('<li>').text(arr[i]).appendTo($ul);
+		}else {
+  			recursiveTree(arr[i], $ul);
+		}
+	}
+}
+
+recursiveTree(data, $item);	
+
+// ------------------------------5--------------------------------------
+// Напишите функцию, которая изображает в теге HTML картинку по данным, представляющим из себя двумерный массив закрашенных точек.
+
+var cat = [
+    [2, 3, 4],
+    [1, 2, 8, 15],
+    [0, 1, 8, 9, 14, 15],
+    [0, 1, 4, 5, 8, 9, 10, 11, 12, 13, 14, 15],
+    [0, 1, 3, 4, 5, 6, 8, 11, 12, 15],
+    [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 15],
+    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 13, 14, 15],
+    [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14],
+    [1, 2, 3, 6, 7, 11, 12],
+    [1, 2, 6, 7],
+    [1, 2, 3, 4, 6, 7, 8],
+    [1, 2, 3, 4, 6, 7, 8]
+];
+
+var $item = $('<table>').css({'margin' : 'auto', 'background' : '#fff', 'border-collapse' : 'collapse', 'border-spacing' : 0}).prependTo('body');
+
+for (var i = 0; i < cat.length; i++) {
+	var $tr = $('<tr>').appendTo($item);
+
+	for (var j = 0, k=0; (j < 16) || (k < cat[i].length); j++) {
+		if (j == cat[i][k]) {
+			k++;
+			$('<td>').css({'background' : '#000', 'height' : '40px', 'width' : '40px'}).appendTo($tr);
+		}else
+		$('<td>').css({'border' : '1px solid #000', 'height' : '40px', 'width' : '40px'}).appendTo($tr);
+
+	}
+}