Web Platform
javascript Map 구현
하얀전쟁^^
2010. 6. 28. 14:21
// ----------------------------------
// Map 정의
// ----------------------------------
var Map = function () {
this._array = new Array(); // Map배열
this.pointer = 0;
this._getIndexByKey = function (key) {
for (var i = 0; i < this._array.length; i++) {
if (key == this._array[i][0]) {
return i;
}
}
return -1;
}
this.put = function (key, value) {
var index = this._getIndexByKey(key)
if (index == -1) {
var newArray = new Array(); // key와value를 담는 배열
newArray[0] = key;
newArray[1] = value;
this._array[this._array.length] = newArray;
} else {
this._array[index][1] = value;
}
}
this.get = function (key) {
for (var i = 0; i < this._array.length; i++) {
if (this._array[i][0] == key)
return this._array[i][1];
}
}
this.isNext = function () {
var result;
if (this._array.length > this.pointer) {
result = true;
} else {
result = false;
}
this.pointer++;
return result;
}
this.size = function () {
return this._array.length;
}
this.nowKey = function () {
return this._array[this.pointer - 1][0];
}
this.nowValue = function () {
return this._array[this.pointer - 1][1];
}
} |
/*==============================================================================
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;
}
} |