Хэши в JScript
Хэши являются одним из наиболее эффективных способов организации "словаря" - Dictionary. Хэш - обычный массив, с необычной адресацией, называемой хэш - функцией. Проще говоря, это массив, в котором вместо числового индекса используются текстовые строки.
Промежуточное решение
Хотя приведенный ниже фрагмент вполне работоспособен, он не является полноценным хэшем. В частности, свойство length массива не изменяется при добавлении "хеш - элементов":
<script language="JScript">
var dict = new Array()
dict["First"] = 1
dict["First 2"] = 2
// Выведем все ключи и элементы
for (var key in dict)
document.writeln("dict[" + key + "]= " + dict[key])
</script>
Используем "Scripting.Dictionary"
Этот COM - объект позволяет легко подключить поддержку полноценных хэшей
в локальные приложения на JScript (заметьте, не в Интернет - страницы):
var dict = new ActiveXObject("Scripting.Dictionary")
// Один из методов объекта - Add
dict.Add("First",12)
dict.Add("Last",24)
// Свойство CompareMode
dict.ComparyMode = 0 //0 - бинарное сравнение, 1 - текстовое
// Свойство Count (read-only) - число элементов в хэше
// Свойство Item - позволяет получить или установить элемент
// в хэш по его ключу (можно создавать новые элементы)
dict.Item("Full") = 36
// Свойство Key позволяет изменить ключ у элемента
dict.Key("Full") = "FIO"
// Метод Exists - проверить существование ключа true / false
dict.Exists("FIO")
// Метод Items - возвращает необычный массив из элементов хэша
var items = (new VBArray(dict.Items())).toArray();
// Аналогично Keys вернет необычный массив из ключей хэша
var keys = (new VBArray(dict.Keys())).toArray();
// Метод Remove удаляет элемент с указанным ключом
dict.Remove("FIO")
// Метод RemoveAll удаляет из хэша все элементы
dict.RemoveAll()
|