|
@@ -54,6 +54,51 @@ a.surname = "Petrov";
|
|
|
a["age"] = 17;
|
|
|
```
|
|
|
|
|
|
+Получить ключи ассоциативного массива можно с помощью функции `Object.keys`:
|
|
|
+```javascript
|
|
|
+Object.keys(person)
|
|
|
+```
|
|
|
+
|
|
|
+В качестве значений в ассоциативном массиве могут быть любые типы данных, в том числе и другие ассоциативные массивы:
|
|
|
+```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,
|
|
|
+ },
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+Нет сложностей с циклическими ссылками:
|
|
|
+```javascript
|
|
|
+var a = {}
|
|
|
+var b = {}
|
|
|
+a.b = b
|
|
|
+b.a = a
|
|
|
+
|
|
|
+b.b = b
|
|
|
+a.a = a
|
|
|
+
|
|
|
+a.name = "A"
|
|
|
+b.name = "B"
|
|
|
+```
|
|
|
+
|
|
|
## `in`
|
|
|
|
|
|
Ключевое слово `in` используется для двух задач:
|
|
@@ -72,6 +117,28 @@ for (var key in person){
|
|
|
}
|
|
|
```
|
|
|
|
|
|
+
|
|
|
### Задание
|
|
|
Нарисовать HTML таблицу из двух колонок, в которой слева будут ключи, а справа - значения:
|
|
|
<table><tr><th>name</th><td>Ivan</td></tr><tr><th>surname</th><td>Ivanovv</td></tr><tr><th>fatherName</th><td>Petrovich</td></tr></table>
|
|
|
+
|
|
|
+## JSON
|
|
|
+
|
|
|
+**JSON** (**JavaScript Object Notation**) - синтаксис для хранения древовидных структур данных, который вы видели в примерах выше. Удобен, лаконичен и
|
|
|
+нагляден. Строки в формате **JSON** удобно передавать для обмена данными по сети.
|
|
|
+
|
|
|
+- **Сериализацией** назывют преобразование внутренних структур языка программирования в формат, пригодный для хранения; Обычно это строка того или иного формата
|
|
|
+- **Десериализацией** называют обратное преобразование.
|
|
|
+
|
|
|
+```javascript
|
|
|
+JSON.stringify(someTree)
|
|
|
+JSON.stringify(a)
|
|
|
+JSON.parse('{"country": "Ukraine", "city": "Kharkiv"}')
|
|
|
+```
|
|
|
+
|
|
|
+JSON более строг, чем схожий синтаксис в JavaScript:
|
|
|
+- он требует двойных кавычек вокруг ключей;
|
|
|
+- одинарные кавычки использовать нельзя;
|
|
|
+- невозможно превратить в JSON-строку объекты с циклическими ссылками;
|
|
|
+- поля-методы (функции) не сериализуются
|
|
|
+
|