seregi4 1 year ago
parent
commit
510ebd8e38
4 changed files with 795 additions and 0 deletions
  1. 244 0
      03/index.js
  2. 13 0
      04/index.html
  3. 308 0
      04/index.js
  4. 230 0
      05/index.js

File diff suppressed because it is too large
+ 244 - 0
03/index.js


+ 13 - 0
04/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    
+</script> <script src="index.js"></script>
+</body>
+</html>

+ 308 - 0
04/index.js

@@ -0,0 +1,308 @@
+
+
+// html tree
+//  <body>
+//         <div>
+//             <span>Enter a data please:</span><br/>
+//             <input type='text' id='name'>
+//             <input type='text' id='surname'>
+//         </div>
+//         <div>
+//             <button id='ok'>OK</button>
+//             <button id='cancel'>Cancel</button>
+//         </div>
+//     </body>
+
+
+
+//     Сделайте декларативную JSON-структуру для тэгов выше, в которой:
+// каждый тэг будет объектом
+// имя тэга будет полем tagName
+// вложенные тэги будут в поле subTags
+// текст в тэге будет в поле text
+// набор аттрибутов тэга будет в поле attrs.
+// Выведите значения текста во второй кнопке, используя . и [].
+// Выведите значение атрибута id во втором input, используя . и [].
+
+
+//     let body={
+//     tagName:'body',
+//     paired:true,
+//     subTags:[
+//         {tagName:'div',
+//         paired:true,
+//         subTags:[
+//             {
+//             tagName:'br',
+//             paired:false,
+//             },
+//             {
+//             tagName:'span',
+//             paired:true, 
+//             content:"Enter a data please:", 
+//             },
+//             {
+//             tagName:'input',
+//             paired:false, 
+//             attrs:{
+//             id:'name',
+//             type:'text',
+//             } 
+//             },
+//             {
+//             tagName:'input',
+//             paired:false, 
+//             attrs:{
+//             id:'surname',
+//             type:'text',
+//             } 
+//             },
+//         ]
+//      },
+//         {
+//         tagName:'div',
+//         paired:true,
+//         subTags:[
+//         {
+//             tagName:'button',
+//             content:"Ok",
+//             paired:true, 
+//             attrs:{
+//             id:'ok',
+//             } 
+//       },
+//       {
+//             tagName:'button',
+//             content:"Cancel",
+//             paired:true, 
+//             attrs:{
+//             id:'cancel',
+//             } 
+//             },
+//       ]
+//       }
+//     ]  
+//   }
+
+//   alert(body.subTags[1].subTags[1].content)
+//   alert(body.subTags[0].subTags[3].attrs.id)
+
+// declarative fields
+   
+
+// var notebook = {
+//     brand: prompt('enter brand for ex. HP'),
+//     type:  prompt('enter type for ex. 440 g4'),
+//     model: prompt('enter model for ex. Y7Z75EA'),
+//     ram: +prompt('enter ram im gb'),
+//     size: +prompt('enter screen size in "'),
+//     weight: +prompt('enter weight im kg'),
+//     resolution: {
+//         width: +prompt('enter resolution'),
+//         height: +prompt('enter resolution'),
+//     },
+// };
+
+// var phone = {
+//     brand: prompt('enter phone brand'),
+//     model: prompt('enter phone model'),
+//     ram: +prompt('enter ram in gb'),
+//     color: prompt('enter color'),
+// };
+
+// var person = {
+//     name: prompt('enter name'),
+//     surname: prompt('enter surname'),
+//     married: confirm('married?'),
+// }
+
+// // object links
+
+// var notebook = {
+//     brand: prompt('enter brand for ex. HP'),
+//     type:  prompt('enter type for ex. 440 g4'),
+//     model: prompt('enter model for ex. Y7Z75EA'),
+//     ram: +prompt('enter ram im gb'),
+//     size: +prompt('enter screen size in "'),
+//     weight: +prompt('enter weight im kg'),
+//     resolution: {
+//         width: +prompt('enter resolution'),
+//         height: +prompt('enter resolution'),
+//     },
+// };
+
+// var phone = {
+//     brand: prompt('enter phone brand'),
+//     model: prompt('enter phone model'),
+//     ram: +prompt('enter ram in gb'),
+//     color: prompt('enter color'),
+// };
+
+// var person = {
+//     name: prompt('enter name'),
+//     surname: prompt('enter surname'),
+//     married: confirm('married?'),
+// }
+// person.smartphone = phone;
+// person.laptop = notebook;
+// notebook.owner = person;
+// phone.owner = person;
+
+// // imperative array fill 3
+
+
+// let arrayfill = []
+// arrayfill[0] = prompt('enter something')
+// arrayfill[1] = prompt('enter something')
+// arrayfill[2] = prompt('enter something')
+
+// // // while confirm
+// // Сделайте цикл с confirm, который продолжается по Отмена и заканчивается по ОК.
+
+// do {
+//     var whileConfirm = confirm("yes-no?");
+//   } while (whileConfirm === false);
+
+// //   array fill
+// // Создайте пустой массив и добавляйте в него элементы, пока пользователь не нажмет Отмена в очередном prompt. Используйте push для удобства: push
+
+// let b = []
+// let a = '';
+// do {
+//     a = prompt('enter');
+//     b.push(a);
+// } while (a != null)    
+
+// // array fill nopush
+// // Сделайте предыдущее задание, не используя push, а обращаясь к элементам по индексу.
+
+// let b = []
+// let a = '';
+// let i = 0;
+// do {
+//     a = prompt('enter');
+//     b[i++] = a
+// } while (a != null) 
+// alert (b);
+
+// infinite probability
+// Создайте бесконечный цикл, который прерывается с помощью конструкции break, когда Math.random() > 0.9. Код должен подсчитывать количество итераций и вывести это число с помощью alert.
+// let i = 0;
+// while (true) {
+// let inf = Math.random();
+//   i++;
+//   if (inf > 0.9) {
+//     alert('Количество итераций:  '+i);
+//     break;
+//   }
+// }
+
+// empty loop
+// // Сделайте цикл с prompt, который прерывается по нажатию OK и продолжается по нажатию "Отмена" c пустым телом цикла.
+
+// do {
+//         var whileConfirm = prompt("ok- STOP cancel - GO ");
+//       } while (whileConfirm === null);
+
+
+// progression sum
+// Подсчитать сумму арифметической прогрессии от 1 до N c шагом 3 (1,4,7....) используя цикл for.
+
+// let x = 0;
+// let n = prompt('введи N')
+//     for (let i = 1; i < n; i+=3){
+//         // x += i;
+//         x = (x+i)*n
+//     }
+//     alert("прогрессия равна: "+x);
+
+
+// chess one line
+// Сформировать строку " # # # # # " с помощью цикла for. Длина строки может быть четной и нечетной, и указывается в одном месте в коде.
+
+// var chess = "";
+// for(var a = 0; a < 12; a++){
+//   chess += (a % 2) ? " " : "#";
+//  }
+//  alert(chess);
+
+// numbers
+// Сформировать строку c помощью вложенных циклов. Для перевода строки используйте \n.
+
+
+// let str = "";
+// for(var i = 0; i < 10; i++){
+//  for(var a = 0; a < 10; a++){
+//     str += a;
+//  }
+//  str += "\n";
+// }
+// alert(str);
+
+// // Сформируйте строку с шахматной доской из вложенных циклов. Для перевода строки используйте \n. Код должен поддерживать легкое изменение размеров доски.
+// var chessboard = "";
+// for(var i = 0; i < 10; i++){
+//  for(var a = 0; a < 12; a++){
+//   chessboard += (a % 2) == (i % 2) ? "." : "#";
+//  }
+//  chessboard += "\n";
+// }
+// alert(chessboard);
+
+
+// Сформируйте массив из N элементов, содержащий в себе кубы индексов, т. е:
+// [0,1,8,27,64...]
+
+// let arr=[];
+// let i = 0
+// let n=prompt('Введи количество элементов')
+// for(; i<n ; i++){
+//     arr.push(i**3)
+// }
+// alert('Кубы индексов '+n + ' элементов: '+ arr)
+
+
+// multiply table
+// C помощью вложенного цикла сформируйте массив массивов "таблица умножения". Для инициализации вложенных массивов используйте
+// arr[i] = [] //в i-тый элемент массива заносится новый пустой массив
+// arr[5][6] должен быть равен, соответственно, 30, arr[7][2] == 14 и так далее.
+
+let arr = [];
+for(let i = 1; i < 10; i++){
+    arr[i] = [];
+for(let j = 1; j <10; j++){
+   arr[i][j] = i * j;
+}
+}
+
+// matrix to html table
+// Сделайте вложенный цикл, который формирует HTML-таблицу в переменной строкового типа из любого двумерного массива. Т. е. если в нём использовать результат работы предыдущего задания, то получится таблица умножения в HTML (Таблица Пифагора)
+
+
+document.write ('<table align="center" bgcolor="fdfdfd" ');
+document.write ('cellspacing="0" cellpadding="4" ');
+document.write ('border="1" >');
+let td, content;
+for (let i = 0; i < 10; i++) 
+   {                                                                                            
+   document.write ('<tr>');                                                                     
+   for (let j = 0; j < 10; j++) 
+      {                                                             
+      if (i == 0 || j == 0)                                          
+         {                                                              
+         td = '<td >';                                 
+          if (i == 0)  content = '<b>' + j + '</b>';                     
+         else if (j == 0)  content = '<b>' + i + '</b>';                     
+         }                                                              
+      else                                                              
+         {                                                                              
+         td = '<td >';                                           
+         if (i == j) content = '<b>' + i * j + '</b>';                  
+         else  content = i * j;                                               
+        }                                                                                
+      document.write (td + content + '</td>');                                
+      }                      
+   document.write ('</tr>');                                                                    
+   } 
+ 
+document.write ('<table>');

+ 230 - 0
05/index.js

@@ -0,0 +1,230 @@
+// 3 persons
+// Сделать три ассоциативных массива a, b, c, в каждом из которых должны быть поля name и surname.
+
+let a = {
+  name: "Peter",
+  surname: "Petrov",
+}
+let b = {
+  name: "Ivan",
+  surname: "Ivanov",
+}
+let c = {
+  name: "Vasil",
+  surname: "Vasilyovich",
+}
+
+  different fields
+Добавьте некоторые другие поля(например age, fathername, sex(пол)) так, что бы набор полей отличался у разных объектов
+
+let a = {
+  name: "Peter",
+  surname: "Petrov",
+  fathername: "Petrivich",
+}
+let b = {
+  name: "Ivan",
+  surname: "Ivanov",
+  age: "30",
+}
+let c = {
+  name: "Vasil",
+  surname: "Vasilyovich",
+  sex: "male",
+}
+
+  fields check
+Проверьте наличие необязательных полей у каждого из этих массивов.Если поле найдено, выведите его с помощью alert.Проверку делайте по typeof или in в if.
+
+let a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  }
+let b = {
+  name: "Ivan",
+  surname: "Ivanov",
+  age: "30",
+}
+let c = {
+  name: "Vasil",
+  surname: "Vasilyovich",
+  sex: "male",
+}
+
+alert((prompt('Enter key') in a) ? a.name : "no")
+
+
+array of persons
+Добавьте несколько ассоциативных массивов с персонами в обычный массив persons, например a, b, c.Так же добавьте персону литерально({ ...}).Получится обычный массив с элементами - ассоциативными массивами с персонами.
+
+
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  c = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+
+
+loop of persons
+Сделайте цикл, который выводит весь массив persons в форме объектов console.log(persons[i])
+
+
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  c = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+for (let i = 0; i < persons.length; i++) {
+  console.log(persons[i])
+}
+
+loop of name and surname
+Сделайте цикл, который выводит весь массив persons, но только Имя и Фамилию каждой персоны.
+
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  c = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+for (let i = 0; i < persons.length; i++) {
+  if (typeof persons[i].name === 'string' && typeof persons[i].surname === 'string') {
+    for (let key in persons[i]) {
+    }
+    alert("name " + " " + persons[i].name + " " + "surname " + " " + persons[i].surname);
+  } else {
+    alert('((((')
+  }
+}
+
+   loop of loop of values
+Сделайте цикл, который выводит весь массив persons, но только значения всех полей из объектов.Используйте вложенный цикл
+
+
+
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  c = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+
+//   fullName
+//     Сделайте цикл, которых добавляет поле fullName в каждый объект, содержащий ФИО. Учтите, что поле fathername не является обязательным.
+
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  c = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+
+for (let i = 0; i < persons.length; i++) {
+  for (let key in persons[i]) {
+    persons[i].fullName = persons[i].fullName = (persons[i].name + " " + persons[i].surname);
+  }
+}
+
+serialize
+Создайте JSON - строку из persons
+
+JSON.stringify(persons)
+
+
+deserialize
+Создайте ассоциативный массив с одной персоной из JSON - строки.Добавьте её в persons
+
+JSON.parse('{"name": "Petr", "surname": "Petrov", "fathername": "Petrovich"}');
+
+HTML
+let persons = [
+  a = {
+    name: "Peter",
+    surname: "Petrov",
+    fathername: "Petrivich",
+  },
+  b = {
+    name: "Ivan",
+    surname: "Ivanov",
+    age: "30",
+  },
+  f = {
+    name: "Vasil",
+    surname: "Vasilyovich",
+    sex: "male",
+  }
+]
+var value = "<table border='1'>";
+for (let i = 0; i < persons.length; i++) {
+  let persona = persons[i]
+  let arrKeys = Object.keys(persona);
+  for (let j = 0; j <= arrKeys.length; j++) {
+    let key = arrKeys[j];
+    let value = `${key}: ${persona[key]}`;
+    
+
+  }
+  
+}
+value += Object.keys(a);
+  value += "</table>";
+
+document.write(value);