me@helium 8 gadi atpakaļ
vecāks
revīzija
208729f084
2 mainītis faili ar 77 papildinājumiem un 1 dzēšanām
  1. 76 0
      04HomeWork.md
  2. 1 1
      05.md

+ 76 - 0
04HomeWork.md

@@ -0,0 +1,76 @@
+# Домашнее задание: Ассоциативные массивы
+
+1. Сделать три ассоциативных массива `a`, `b`, `c`, в каждом из которых должны быть поля `name` и `surname`.
+2. Добавьте некоторые другие поля (например `age`, `fathername`, `sex` (пол)) так, что бы набор полей отличался у разных записей
+3. Проверьте наличие полей у каждого из этих массивов. Если поле найдено, выведите его с помощью `alert`. Проверку делайте по `typeof` или `in` в `if`.
+4. Добавьте несколько ассоциативных массивов с персонами в *обычный* массив `persons`, например `a`,`b`,`c`. Так же добавьте персону *литерально*.
+   Получится обычный массив с элементами-ассоциативными массивами с персонами.
+5. Сделайте цикл, который выводит весь массив `persons` в форме объектов `console.log(persons[i])`
+6. Сделайте цикл, который выводит весь массив `persons`, но только Имя и Фамилию каждой персоны. Используйте вложенный `for` для вывода полей персоны
+7. Сделайте цикл, который выводит весь массив `persons`, но только Имя и Фамилию каждой персоны. Используйте `Object.keys` и вложенный `for` для вывода полей персоны
+8. Сделайте цикл, который выводит весь массив `persons`, при этом проверяет наличие других полей, и выводит дополнительные сообщения с этими полями.
+   `typeof` в помощь.
+9. Сделайте цикл, которых добавляет поле `fullName`, содержащий ФИО. Учтите, что поле `fathername` не является обязательным.
+10. Сделайте цикл, который выводит весь массив `persons`, в форме HTML-таблицы. Имя и Фамилия
+11. Сделайте цикл, который выводит весь массив `persons`, в форме HTML-таблицы. Имя и Фамилия, а так же другие поля при наличии. Для решения этой задачи
+    вначале узнайте множество полей (ключей) во всех записях, выведите HTML-заголовок используя тэги `<th>`, а потом выводите все записи.
+12. Добавьте к предыдущему примеру раскраску через строчку используя другой стиль тэга `tr`.
+13. Переработайте вывод `persons` в HTML с поиском всех возможных колонок во всех записях, выводом названий колонок в заголовок HTML-таблицы. Для решения этой задачи
+    вначале узнайте множество полей (ключей) во всех записях, выведите HTML-заголовок используя тэги `<th>`, а потом выводите все записи.
+
+## Задание на синий пояс.
+
+Сделать HTML-конструктор из деревянной структуры тэгов:
+
+```javascript
+var someTree = {
+    tag: "table", //html tag
+    nestedTags: [ //вложенные тэги
+        {
+                    tag: "tr",
+                    nestedTags: [
+                        {
+                            tag: "td",
+                            content: "some text",
+                        },
+                        {
+                            tag: "td",
+                            content: "some text 2",
+                        }
+                    ]
+        }
+    ],
+    options: 
+    {
+        border: 1,
+    },
+}
+```
+
+Для начала сделайте конструктор для верхнего уровня (в примере - `table`). Потом с помощью копипасты сделайте то же самое с вложенным уровнем `nestedTags` (`tr`). 
+Аналогично для уровня `td`.
+
+Конструктор должен поддерживать вложенность до 3его уровня (как в примере). В результате работы конструктора из примера выше должен получиться следующий
+HTML(в строке `str`):
+```HTML
+<table border=1>
+    <tr>
+        <td>some text</td>
+        <td>some text 2</td>
+    </tr>
+</table>
+```
+Переносы строк и отступы в результате не принципиальны, главное - структура HTML
+
+## Задание на черный пояс
+
+Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив для хранения истории, а использовать ассоциативный массив:
+Например, если пользователь ввел `1212` за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности:
+```javascript
+var history      = "1212"
+var predictValue = predictArray[history] // в predictValue то, что ввел последний раз пользователь после нажатий 1212
+var newValue     = prompt("введите 1 или 2","");
+predictArray[history] = newValue         //сохраняем новый ввод
+//сдвигаем историю
+```
+

+ 1 - 1
05.md

@@ -151,7 +151,7 @@ alert(name);
 ## Определение и выполнение функций
 
 Обратите внимание, что первый `alert` происходит ДО включения пошаговой отладки. Это говорит о том, что *определение функции* **НЕ** вызывает её. 
-Код функции работает только после вызова, который происходит по `d()`. Для вызова надо указать в коде имя функции и скобки после имения (с параметрами
+Код функции работает только после вызова, который происходит по `d()`. Для вызова надо указать в коде имя функции и скобки после имени (с параметрами
 или без оных)
 ```javascript
 function d()