Przeglądaj źródła

assoc arrays, in, JSON

me@helium 8 lat temu
rodzic
commit
2f384a2b2c
1 zmienionych plików z 67 dodań i 0 usunięć
  1. 67 0
      04AssociativeArrays.md

+ 67 - 0
04AssociativeArrays.md

@@ -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-строку объекты с циклическими ссылками;
+- поля-методы (функции) не сериализуются
+