/*==============================================================================
Function : javaScript Map
Return :
examples :
: get(key), getKey(value), put(key, value), size(), remove(key),
clear(), keys(), values(), containsKey(key), containsValue(value),
isEmpty(), putAll(map), toString(separator)
==============================================================================*/
function Map(Delimitor) {
this.Delimitor = (Delimitor == null ? "||" : Delimitor);
this._MapClass = new ActiveXObject("Scripting.Dictionary");
this.get = function (key) { return this._MapClass.exists(key) ? this._MapClass.item(key) : null; }
this.getKey = function (value) {
var keys = this.keys();
var values = this.values();
for (var i in values) {
if (value == values[i]) return keys[i];
}
return "";
}
this.put = function (key, value) {
var oldValue = this._MapClass.item(key);
this._MapClass.item(key) = value;
return value;
}
this.size = function () { return this._MapClass.count; }
this.remove = function (key) {
var value = this._MapClass.item(key);
this._MapClass.remove(key);
return value;
}
this.clear = function () {
this._MapClass.removeAll();
}
this.keys = function () {
return this._MapClass.keys().toArray();
}
this.values = function () {
return this._MapClass.items().toArray();
}
this.containsKey = function (key) {
return this._MapClass.exists(key);
}
this.containsValue = function (value) {
var values = this.values();
for (var i in values) {
if (value == values[i]) {
return true;
}
}
return false;
}
this.isEmpty = function () { return this.size() <= 0; }
this.putAll = function (map) {
if (!(map instanceof Map)) {
throw new Error(0, "Map.putAll(Map) method are required Map type parameter.");
}
var keys = map.keys();
for (var i in keys) {
this.put(keys[i], map.get(keys[i]));
}
return this;
}
this.toString = function (separator) {
var keys = this.keys();
var result = "";
separator = separator == null ? "&" : separator;
for (var i in keys) {
result += (keys[i] + this.Delimitor + this._MapClass.item(keys[i]));
if (i < this.size() - 1) {
result += separator;
}
}
return result;
}
} |