|
@@ -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 //сохраняем новый ввод
|
|
|
+//сдвигаем историю
|
|
|
+```
|
|
|
+
|