04HomeWork.md 6.1 KB

Домашнее задание: Ассоциативные массивы

  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-заголовок используя тэги <th>, а потом выводите все записи.
  12. Добавьте к предыдущему примеру раскраску через строчку используя другой стиль тэга tr.
  13. Переработайте вывод persons в HTML с поиском всех возможных колонок во всех записях, выводом названий колонок в заголовок HTML-таблицы. Для решения этой задачи вначале узнайте множество полей (ключей) во всех записях, выведите HTML-заголовок используя тэги <th>, а потом выводите все записи.

Задание на синий пояс.

Сделать HTML-конструктор из деревянной структуры тэгов:

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):

<table border=1>
    <tr>
        <td>some text</td>
        <td>some text 2</td>
    </tr>
</table>

Переносы строк и отступы в результате не принципиальны, главное - структура HTML

Задание на черный пояс

Сделать предыдущее задание на черный пояс в упрощенном виде: не использовать четырехмерный массив для хранения истории, а использовать ассоциативный массив: Например, если пользователь ввел 1212 за последние четыре хода, то мы ищем то, что было введено последний раз после такой последовательности:

var history      = "1212"
var predictValue = predictArray[history] // в predictValue то, что ввел последний раз пользователь после нажатий 1212
var newValue     = prompt("введите 1 или 2","");
predictArray[history] = newValue         //сохраняем новый ввод
//сдвигаем историю