Объект 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
Атрибуты: { 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
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства
Count является размер
объекта, т. е. количество содержащихся в нем пар (ключ, значение). Пример использования этого свойства приведен выше.
Синтаксис: объект.Item(ключ)
Атрибуты: { DontEnum, DontDelete }
Значением свойства
Item является значение словаря
объект, соответствующее
ключу. Точнее говоря, при чтении этого свойства:
- Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и неопределенным значением и возвращается значение undefined.
- Если заданный ключ в словаре есть, то возвращается ассоциированное с ним значение.
При задании нового значения этого свойства:
- Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и заданным значением.
- Если заданный ключ в словаре есть, то ассоциированное с ним значение заменяется на заданное.
Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Item("г") = "Гомель";
document.write(d.Item("г"));
выведет на экран обозревателя текст
Гомель.
Синтаксис: объект.Key(ключ) = новый_ключ
Атрибуты: { DontEnum, DontDelete }
Свойство
Key используется для изменения
ключа в словаре
объект. При этом
- Если заданный ключ в словаре отсутствует, то создается новая пара с ключом новый_ключ и неопределенным значением.
- Если заданный ключ в словаре есть, то он заменяется на новый_ключ.
Чтение этого свойства невозможно. Например, следующий сценарий
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Key("а") = "ар";
document.write(d.Item("ар"));
выведет на экран обозревателя текст
Архангельск.
Синтаксис: объект.Add(ключ, значение)
Аргументы: ключ — ключ создаваемой пары
значение — соответствующее значение
Метод
Add добавляет в словарь
объект новую пару (
ключ,
значение). Если данный
ключ уже имеется в словаре, то возникает ошибка. Примеры использования этого метода приведены выше.
Синтаксис: объект.Exists(ключ)
Аргументы: ключ — выражение, задающее искомый ключ
Результат: логическое значение
Метод
Exists возвращает
true, если
ключ имеется в словаре
объект и
false в противном случае. Пример:
var d = new ActiveXObject("Scripting.Dictionary");
d.Add("а", "Архангельск");
var x = d.Exists("а"); // x равно true
Синтаксис: объект.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()
Результат: массив 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 удаляет из словаря
объект пару с заданным (
ключом. Если данного
ключа нет в словаре, то возникает ошибка. Пример:
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d
d.Add("а", "Архангельск"); // Добавляем несколько пар
d.Add("б", "Баку");
d.Add("в", "Воронеж");
d.Remove("б"); // Удаляем вторую пару
Синтаксис: объект.RemoveAll()
Метод
RemoveAll очищает словарь
объект, т. е. удаляет из него все пары.