JavaScript - Ассоциативные массивы

Статья в которой рассматривается основные действия, связанные с созданием и управлением ассоциативными массивами в JavaScript.

Ассоциативный массив - это массив, у которого в качестве ключей выступают строки. Представить структуру данных такого массива можно как совокупность пар "ключ-значение". Данная структура данных характеризуется тем, что значение связано с ключом, т.е. если вы предоставите массиву некоторый ключ, то он вернёт значение, которое с ним связано.

Давайте нарисуем данную ситуацию более абстрактно. Например, представим ассоциативный массив как ящичек, в котором находятся коробочки. У каждой коробочки есть ключ - название коробочки и значение - содержимое коробочки. Для того чтобы найти нужную коробочку в ящичке нужно знать её имя (ключ). После того как нашли нужную коробочку можно получить её содержимое (значение).

JavaScript - Пустой ассоциативный массив

JavaScript - Ассоциативный массив, состоящий из 4 элементов

JavaScript - Как получить значение элемента ассоциативного массива

В JavaScript нет определённого типа, предназначенного исключительно для создания ассоциативных массивов. Объект Array в JavaScript предназначен исключительно для создания массивов, у которых в качестве ключей используются индексы (числа).

Создание ассоциативных массивов в JavaScript осуществляется на основе типа object (объект). В этом типе данных в качестве ключей можно использовать свойства, а в качестве значений - значения свойств.

Пустой ассоциативный массив (пустой ящичек) можно создать одним из следующих способов:

//полная запись
var myArray= new Object();

//более короткая запись
var otherArray = {};

Добавление элемента (пары "ключ-значение") в ассоциативный массив осуществляется следующим образом:

myArray["ключ1"] = "значение1";
myArray["ключ2"] = "значение2";

Получить значение (содержимое коробочки) элемента по ключу можно с помощью следующего кода:

myArray["ключ1"];
myArray["ключ2"];

Заполнение ассоциативного массива на этапе его создания осуществляется следующим образом:

var myArray = { 
  "ключ1": "значение1"
 ,"ключ2": "значение2"
 , ... }

Перебор элементов ассоциативного массива осуществляется с помощью цикла for..in:

//key - ключ
//myArray - ассоциативный массив
for(key in myArray) {
  //myArray[key] - значение ключа
  console.log(key + " = " + myArray[key]);
}

Узнать длину ассоциативного массива можно следующим образом:

1. Сначала необходимо получить массив с именами ключей с помощью метода keys():

var myArray = { "key1":"value1", "key2":"value2", "key3":"value3"}
//получить массив с именами ключей
Object.keys(myArray);
// --> ["key1", "key2", "key3"]

2. С помощью свойства length узнать у полученного массива его длину:

Object.keys(myArray).length
// --> 3

Удаление элемента из ассоциативного массива (коробочки) осуществляется с помощью оператора delete.

delete myArray["key1"];

Осуществить проверку наличия ключа в ассоциативном массиве можно так:

var myArray = {"key1":"value1", "key2":"value2" };
//1 способ
if ("key1" in myArray) {
  alert("Ключ key1 существует.");
} else {
  alert("Ключ key1 не существует.");
}
//2 способ
if (myArray.hasOwnProperty("key1")) {
  alert("Ключ key1 существует.");
} else {
  alert("Ключ key1 не существует.");
}

Примечание

Если кроме рассмотренного ограничения (заключение ключей в двойные кавычки) добавить ещё следующие:

  • строковые значения свойств заключать в двойные кавычки;
  • не использовать комментарии.

То вместо базового объекта JavaScript, получим его нотацию – JSON.

Применение формата JSON по сравнению с использованием обычного объекта принесёт дополнительные возможности, которые позволят:

  • преобразовывать строку JSON в объект (метод JSON.parse);
  • преобразовывать объект JSON в строку (метод JSON.stringify).

Это позволит более просто хранить или передавать данные (ассоциативный массив).

//объект JSON
var myJSONObject = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
};

//получить значение по ключу key2 (вывести в консоль)
console.log(myJSONObject["key2"]);

//преобразовать JSON-объект в массив
var str = JSON.stringify(myJSONObject);
//вывести строку JSON в консоль
console.log(str);

//преобразовать JSON-строку в объект
var obj = JSON.parse(str);
//вывести объект в консоль
console.log(obj);

//получить значение по ключу key1 (вывести в консоль)
console.log(obj["key1"]);

JavaScript - Ассоциативный массив в формате JSON

Более подробно познакомиться с форматом JSON можно в следующей статье: JavaScript - Формат данных JSON



   JavaScript и jQuery 0    8448 0

Комментарии (0)

    Вы должны авторизоваться, чтобы оставлять комментарии.