// ----------------------------------
// 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;
    }
}


+ Recent posts