# Ассоциативные массивы, `in`, JSON Кроме обычных массивов, в которых ключем служит целое число от 0 до `array.length -1`, существуют **ассоциативные массивы**, ключем в котором может быть любой другой тип данных; обычно используется строка. В **JavaScript** нет специального типа данных для ассоциативных массивов - вместо этого ассоциативные массивы представлены объектами (`Object`): ## Создание ассоциативного массива и доступ к полям ```javascript var person = { name: "Ivan", surname: "Ivanovv", "fatherName": "Petrovich", } typeof person ``` Нет разницы, определять ключи *литерально* или через строку (в кавычках `"fatherName"`). Для обращения к элементам по ключу используются следующие нотации: ```javascript person.fatherName person["name"] ``` Обратите внимание, что `person.fatherName` работает так же как и `person["name"]`, несмотря на то, что определены по разному. Для обращения через ключ в переменной используется нотация с квадратными скобками: ```javascript var key = "surname"; person[key] person.key ``` Если просто написать `person.key`, то **JavaScript** будет искать ключ `key` *литерально*, а не по значению переменной `key` ("surname") Вы можете определить новый элемент массива просто присвоив ему значение: ```javascript person.age = 98; person ``` Также можно создавать массив через конструктор Object: ```javascript var a = new Object(); a.name = "Petr" a.surname = "Petrov"; a["age"] = 17; ``` ## `in` Ключевое слово `in` используется для двух задач: - проверка наличия ключа в ассоциативном массиве ```javascript "fatherName" in a "age" in person ``` - конструкция `for (var key in arr)` для перебора всех элементов ассоциативного массива ```javascript for (var key in person){ console.log(key+": "+person[key]); } ``` ### Задание Нарисовать HTML таблицу из двух колонок, в которой слева будут ключи, а справа - значения:
name | Ivan |
---|---|
surname | Ivanovv |
fatherName | Petrovich |