Объект Dictionary предназначен для создания словарей. Словарь в JScript аналогичен ассоциативному массиву языка PERL и представляет собой набор пар (ключ, значение). Значения могут быть данными любого типа. При этом каждое значение ассоциируется с уникальным ключом, который используется для его поиска и выборки из словаря. Обычно в качестве ключа используются числа или текстовые строки, хотя ключ может быть чем угодно, кроме массива. Конструктор объекта Dictionary имеет вид:

new ActiveXObject("Scripting.Dictionary")
Следующий пример демонстрирует использование словаря:
var d = new ActiveXObject("Scripting.Dictionary");	// Создаем словарь d
d.Add("а", "Архангельск");				// Добавляем несколько пар
d.Add("б", "Баку");
d.Add("в", "Воронеж");
var a = (new VBArray(d.Keys())).toArray();		// Извлекаем массив ключей
var s = "";
for (var i = 0; i < d.Count; i++)			// Просматриваем словарь
  s += a[i] + " - " + d(a[i]) + "<br>";
document.write(s);					// Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст: а - Архангельск б - Баку в - Воронеж
Свойства объекта Dictionary
Свойство Описание
CompareMode Способ сравнения ключей.
Count Количество элементов в словаре.
Item Значение, соответствующее ключу.
Key Изменяет значение ключа.
Методы объекта Dictionary
Метод Описание
Add Добавляет в словарь пару (ключ, значение).
Exists Проверяет наличие заданного ключа в словаре.
Items Возвращает массив значений словаря.
Keys Возвращает массив ключей словаря.
Remove Удаляет из словаря пару (ключ, значение).
RemoveAll Очищает словарь.

Свойство CompareMode

Синтаксис: объект.CompareMode
Атрибуты:  { DontEnum, DontDelete }
Свойство CompareMode позволяет задать способ сравнения текстовых ключей в словаре объект. Оно может принимать следующие значения:
0 Двоичное сравнение. Задает сравнение строк на основе порядка сортировки, определяемого внутренним двоичным представлением символов. В Windows порядок сортировки определяется кодовой страницей символов, например: A < B < E < Z < a < b < e < z < Б < Л < Ш < б < л < ш.
1 Текстовое сравнение. Задает сравнение строк без учета регистра символов на основе национальной настройки операционной системы. Тем же символам, что и выше, в этом случае соответствует следующий порядок: (A=a) < (B=b) < (E=e) < (Z=z) < (Б=б) < (Л=л) < (Ш=ш).
2 Сравнение на основе национальной настройки базы данных. В обозревателях не используется.
Значения, большие двух, могут использоваться для сравнения ключей в определенной кодировке символов и в этом случае они должны быть равны идентификатору кодировки (LCID). Значение этого свойства может быть считано в любое время, но задается оно до занесения в словарь любых значений. Попытка задать способ сравнения ключей для непустого словаря приводит к ошибке исполнения. Пример:
var d = new ActiveXObject("Scripting.Dictionary");
d.CompareMode = 0;	// различать строчные и прописные буквы в ключах
d.Add ("а", "ааа");
d.Add ("А", "ААА");
document.write(d.Item("а"));

Свойство Count

Синтаксис: объект.Count
Атрибуты:  { DontEnum, DontDelete, ReadOnly }
Значением свойства Count является размер объекта, т. е. количество содержащихся в нем пар (ключ, значение). Пример использования этого свойства приведен выше.

Свойство Item

Синтаксис: объект.Item(ключ)
Атрибуты:  { DontEnum, DontDelete }
Значением свойства Item является значение словаря объект, соответствующее ключу. Точнее говоря, при чтении этого свойства:
  • Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и неопределенным значением и возвращается значение undefined.
  • Если заданный ключ в словаре есть, то возвращается ассоциированное с ним значение.
При задании нового значения этого свойства:
  • Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и заданным значением.
  • Если заданный ключ в словаре есть, то ассоциированное с ним значение заменяется на заданное.
Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Item("г") = "Гомель";
document.write(d.Item("г"));
выведет на экран обозревателя текст Гомель.

Свойство Key

Синтаксис: объект.Key(ключ) = новый_ключ
Атрибуты:  { DontEnum, DontDelete }
Свойство Key используется для изменения ключа в словаре объект. При этом
  • Если заданный ключ в словаре отсутствует, то создается новая пара с ключом новый_ключ и неопределенным значением.
  • Если заданный ключ в словаре есть, то он заменяется на новый_ключ.
Чтение этого свойства невозможно. Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Key("а") = "ар";
document.write(d.Item("ар"));
выведет на экран обозревателя текст Архангельск.

Метод Add

Синтаксис: объект.Add(ключ, значение)
Аргументы: ключ — ключ создаваемой пары

значение — соответствующее значение
Метод Add добавляет в словарь объект новую пару (ключзначение). Если данный ключ уже имеется в словаре, то возникает ошибка. Примеры использования этого метода приведены выше.

Метод Exists

Синтаксис: объект.Exists(ключ)
Аргументы: ключ — выражение, задающее искомый ключ
Результат: логическое значение
Метод Exists возвращает true, если ключ имеется в словаре объект и false в противном случае. Пример:
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
var x = d.Exists("а");	// x равно true

Метод Items

Синтаксис: объект.Items()
Результат: массив VBScript
Метод Items возвращает массив значений словаря объект. Возвращаемый массив имеет формат VBScript, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
var d = new ActiveXObject("Scripting.Dictionary");	// Создаем словарь d
d.Add("а", "Архангельск");				// Добавляем несколько пар
d.Add("б", "Баку");
d.Add("в", "Воронеж");
var a = (new VBArray(d.Items())).toArray();		// Извлекаем массив значений
var s = "";
for (var i in a)					// Просматриваем словарь
  s += a[i] + " ";
document.write(s);					// Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст Архангельск Баку Воронеж.

Метод Keys

Синтаксис: объект.Keys()
Результат: массив VBScript
Метод Keys возвращает массив ключей словаря объект. Возвращаемый массив имеет формат VBScript, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
var d = new ActiveXObject("Scripting.Dictionary");	// Создаем словарь d
d.Add("а", "Архангельск");				// Добавляем несколько пар
d.Add("б", "Баку");
d.Add("в", "Воронеж");
var a = (new VBArray(d.Keys())).toArray();		// Извлекаем массив ключей
var s = "";
for (var i in a)					// Просматриваем словарь
  s += a[i] + " ";
document.write(s);					// Выводим на экран результат
Последний оператор этого примера выведет на экран обозревателя текст а б в.

Метод Remove

Синтаксис: объект.Remove(ключ)
Аргументы: ключ — искомый ключ
Метод Remove удаляет из словаря объект пару с заданным (ключом. Если данного ключа нет в словаре, то возникает ошибка. Пример:
var d = new ActiveXObject("Scripting.Dictionary");	// Создаем словарь d
d.Add("а", "Архангельск");				// Добавляем несколько пар
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Remove("б");						// Удаляем вторую пару

Метод RemoveAll

Синтаксис: объект.RemoveAll()
Метод RemoveAll очищает словарь объект, т. е. удаляет из него все пары.