# Домашнее задание: Ассоциативные массивы 1. Сделать три ассоциативных массива `a`, `b`, `c`, в каждом из которых должны быть поля `name` и `surname`. 2. Добавьте некоторые другие поля (например `age`, `fathername`, `sex` (пол)) так, что бы набор полей отличался у разных записей 3. Проверьте наличие полей (`age`, `fathername`, `sex`) у каждого из этих массивов. Если поле найдено, выведите его с помощью `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-заголовок используя тэги ``, а потом выводите все записи. 12. Добавьте к предыдущему примеру раскраску через строчку используя другой стиль тэга `tr`. 13. Переработайте вывод `persons` в HTML с поиском всех возможных колонок во всех записях, выводом названий колонок в заголовок 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, }, } ``` Для начала сделайте конструктор для верхнего уровня (в примере - `table`). Потом с помощью копипасты сделайте то же самое с вложенным уровнем `nestedTags` (`tr`). Аналогично для уровня `td`. Конструктор должен поддерживать вложенность до 3его уровня (как в примере). В результате работы конструктора из примера выше должен получиться следующий HTML(в строке `str`): ```HTML
some text some text 2
``` Переносы строк и отступы в результате не принципиальны, главное - структура HTML ## Задание на черный пояс Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив для хранения истории, а использовать ассоциативный массив: Например, если пользователь ввел `1212` за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности: ```javascript var history = "1212" var predictValue = predictArray[history] // в predictValue то, что ввел последний раз пользователь после нажатий 1212 var newValue = prompt("введите 1 или 2",""); predictArray[history] = newValue //сохраняем новый ввод //сдвигаем историю ```