
Словарь — это структура данных, в которой данные хранятся в парах ключ-значение. Он используется для хранения и эффективного извлечения данных. Он позволяет хранить и извлекать данные, используя пары ключ-значение. В отличие от массивов, которые хранят данные в линейном порядке, словари в JavaScript позволяют получать доступ к данным, используя уникальный ключ, а не индекс. Это делает словари идеальными для хранения данных, доступ к которым должен быть быстрым и понятным, таких как база данных пользователей или список продуктов.
Рассмотрим следующее:
- Создайте словарь тремя различными способами
- Добавьте пару ключ-значение в словарь
- Обновите значение для ключа
- Доступ к элементам из словаря
- Получение всех ключей словаря
- Получение всех значений из словаря
- Получение длины словаря
Словари: объект Dictionary
Объект Dictionary предназначен для создания словарей. Словарь в JScript аналогичен ассоциативному массиву языка PERL и представляет собой набор пар (ключ, значение). Значения могут быть данными любого типа. При этом каждое значение ассоциируется с уникальным ключом, который используется для его поиска и выборки из словаря. Обычно в качестве ключа используются числа или текстовые строки, хотя ключ может быть чем угодно, кроме массива. Конструктор объекта Dictionary имеет вид:
|
1 |
new ActiveXObject("Scripting.Dictionary") |
Следующий пример демонстрирует использование словаря:
|
1 2 3 4 5 6 7 8 9 |
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); // Выводим на экран результат |
Последний оператор этого примера выведет на экран обозревателя текст:
а — Архангельск
б — Баку
в — Воронеж
| Свойство | Описание |
|---|---|
| CompareMode | Способ сравнения ключей. |
| Count | Количество элементов в словаре. |
| Item | Значение, соответствующее ключу. |
| Key | Изменяет значение ключа. |
| Метод | Описание |
|---|---|
| Add | Добавляет в словарь пару (ключ, значение). |
| Exists | Проверяет наличие заданного ключа в словаре. |
| Items | Возвращает массив значений словаря. |
| Keys | Возвращает массив ключей словаря. |
| Remove | Удаляет из словаря пару (ключ, значение). |
| RemoveAll | Очищает словарь. |
Свойство CompareMode
Свойство CompareMode позволяет задать способ сравнения текстовых ключей в словаре объект. Оно может принимать следующие значения:
| 0 | Двоичное сравнение. Задает сравнение строк на основе порядка сортировки, определяемого внутренним двоичным представлением символов. В Windows порядок сортировки определяется кодовой страницей символов, например: A < B < E < Z < a < b < e < z < Б < Л < Ш < б < л < ш. |
| 1 | Текстовое сравнение. Задает сравнение строк без учета регистра символов на основе национальной настройки операционной системы. Тем же символам, что и выше, в этом случае соответствует следующий порядок: (A=a) < (B=b) < (E=e) < (Z=z) < (Б=б) < (Л=л) < (Ш=ш). |
| 2 | Сравнение на основе национальной настройки базы данных. В обозревателях не используется. |
Значения, большие двух, могут использоваться для сравнения ключей в определенной кодировке символов и в этом случае они должны быть равны идентификатору кодировки (LCID).
Значение этого свойства может быть считано в любое время, но задается оно до занесения в словарь любых значений. Попытка задать способ сравнения ключей для непустого словаря приводит к ошибке исполнения. Пример:
|
1 2 3 4 5 |
var d = new ActiveXObject("Scripting.Dictionary"); d.CompareMode = 0; // различать строчные и прописные буквы в ключах d.Add ("а", "ааа"); d.Add ("А", "ААА"); document.write(d.Item("а")); |
Свойство Count
Значением свойства Count является размер объекта, т. е. количество содержащихся в нем пар (ключ, значение). Пример использования этого свойства приведен выше.
Свойство Item
Значением свойства Item является значение словаря объект, соответствующее ключу. Точнее говоря, при чтении этого свойства:
- Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и неопределенным значением и возвращается значение undefined.
- Если заданный ключ в словаре есть, то возвращается ассоциированное с ним значение.
При задании нового значения этого свойства:
- Если заданный ключ в словаре отсутствует, то создается новая пара с данным ключом и заданным значением.
- Если заданный ключ в словаре есть, то ассоциированное с ним значение заменяется на заданное.
Например, следующий сценарий
|
1 2 3 4 5 6 |
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Item("г") = "Гомель"; document.write(d.Item("г")); |
выведет на экран обозревателя текст Гомель.
Свойство Key
Свойство Key используется для изменения ключа в словаре объект. При этом
- Если заданный ключ в словаре отсутствует, то создается новая пара с ключом новый_ключ и неопределенным значением.
- Если заданный ключ в словаре есть, то он заменяется на новый_ключ.
Чтение этого свойства невозможно. Например, следующий сценарий
|
1 2 3 4 5 6 |
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Key("а") = "ар"; document.write(d.Item("ар")); |
выведет на экран обозревателя текст Архангельск.
Метод Add
Метод Add добавляет в словарь объект новую пару (ключ, значение). Если данный ключ уже имеется в словаре, то возникает ошибка. Примеры использования этого метода приведены выше.
Метод Exists
Метод Exists возвращает true, если ключ имеется в словаре объект и false в противном случае. Пример:
|
1 2 3 |
var d = new ActiveXObject("Scripting.Dictionary"); d.Add("а", "Архангельск"); var x = d.Exists("а"); // x равно true |
Метод Items
Метод Items возвращает массив значений словаря объект. Возвращаемый массив имеет формат VBScript, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
|
1 2 3 4 5 6 7 8 9 |
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, поэтому для его использования в JScript следует пользоваться приемом, указанным в следующем примере:
|
1 2 3 4 5 6 7 8 9 |
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 удаляет из словаря объект пару с заданным (ключом. Если данного ключа нет в словаре, то возникает ошибка. Пример:
|
1 2 3 4 5 |
var d = new ActiveXObject("Scripting.Dictionary"); // Создаем словарь d d.Add("а", "Архангельск"); // Добавляем несколько пар d.Add("б", "Баку"); d.Add("в", "Воронеж"); d.Remove("б"); // Удаляем вторую пару |
Метод RemoveAll
Метод RemoveAll очищает словарь объект, т. е. удаляет из него все пары.
