me@helium 8 лет назад
Родитель
Сommit
5d739583ed
1 измененных файлов с 72 добавлено и 0 удалено
  1. 72 0
      04AssociativeArraysHomeWork.md

+ 72 - 0
04AssociativeArraysHomeWork.md

@@ -0,0 +1,72 @@
+# Домашнее задание: Ассоциативные массивы
+
+1. Сделать три ассоциативных массива `a`, `b`, `c`, в каждом из которых должны быть поля `name` и `surname`.
+2. Добавьте некоторые другие поля (например `age`, `fathername`, `sex` (пол)) так, что бы набор полей отличался у разных записей
+3. Проверьте наличие полей у каждого из этих массивов. Если поле найдено, выведите его с помощью `alert`
+4. Добавьте несколько ассоциативных массивов с персонами в массив `persons`, например `a`,`b`,`c`. Так же добавьте персону *литерально*.
+5. Сделайте цикл, который выводит весь массив `persons` в форме объектов `console.log(persons[i])`
+6. Сделайте цикл, который выводит весь массив `persons`, но только Имя и Фамилию. Используйте `for` 
+7. Сделайте цикл, который выводит весь массив `persons`, но только Имя и Фамилию. Используйте `Object.keys`
+8. Сделайте цикл, который выводит весь массив `persons`, при этом проверяет наличие других полей, и выводит дополнительные сообщения с этими полями.
+   `typeof` в помощь.
+9. Сделайте цикл, которых добавляет поле `fullName`, содержащий ФИО. Учтите, что поле `fathername` не является обязательном.
+10. Создайте `JSON`-строку из `persons`
+11. Создайте ассоциативный массив с одной персоной из `JSON`-строки. Добавьте её в `persons`
+12. Сделайте цикл, который выводит весь массив `persons`, в форме HTML-таблицы. Имя и Фамилия
+13. Сделайте цикл, который выводит весь массив `persons`, в форме HTML-таблицы. Имя и Фамилия, а так же другие поля при наличии.
+14. Добавьте к предыдущему примеру раскраску через строчку используя другой стиль тэга `tr`.
+15. Переработайте вывод `persons` в HTML с поиском всех возможных колонок во всех записях, выводом названий в заголовок HTML-таблицы.
+
+## Задание на синий пояс.
+
+Сделать 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,
+    },
+}
+```
+
+Конструктор должен поддерживать вложенность до 3его уровня (как в примере). В результате работы конструктора из примера выше должен получиться следующий
+HTML:
+```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         //сохраняем новый ввод
+//сдвигаем историю
+```
+