JS 封装 Map对象

/*  
* Map对象,实现Map功能  
* size() 获取Map元素个数  
* isEmpty() 判断Map是否为空  
* clear() 删除Map所有元素  
* put(key, value) 向Map中增加元素(key, value)   
* remove(key) 删除指定key的元素,成功返回true,失败返回false  
* get(key) 获取指定key的元素值value,失败返回null  
* element(index) 获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null  
* containsKey(key) 判断Map中是否含有指定key的元素  
* containsValue(value) 判断Map中是否含有指定value的元素  
* keys() 获取Map中所有key的数组(array)  
* values() 获取Map中所有value的数组(array)  
*  
*/
function Map() {
    this.elements = new Array();

    //获取Map元素个数
    this.size = function () {
        return this.elements.length;
    },

    //判断Map是否为空  
	this.isEmpty = function () {
	    return (this.elements.length < 1);
	},

    //删除Map所有元素  
	this.clear = function () {
	    this.elements = new Array();
	},

    //向Map中增加元素(key, value)   
	this.put = function (_key, _value) {
	    if (this.containsKey(_key) == true) {
	        if (this.containsValue(_value)) {
	            if (this.remove(_key) == true) {
	                this.elements.push({
	                    key: _key,
	                    value: _value
	                });
	            }
	        } else {
	            this.elements.push({
	                key: _key,
	                value: _value
	            });
	        }
	    } else {
	        this.elements.push({
	            key: _key,
	            value: _value
	        });
	    }
	},

    //删除指定key的元素,成功返回true,失败返回false  
	this.remove = function (_key) {
	    var bln = false;
	    try {
	        for (i = 0; i < this.elements.length; i++) {
	            if (this.elements[i].key == _key) {
	                this.elements.splice(i, 1);
	                return true;
	            }
	        }
	    } catch (e) {
	        bln = false;
	    }
	    return bln;
	},

    //获取指定key的元素值value,失败返回null  
	this.get = function (_key) {
	    try {
	        for (i = 0; i < this.elements.length; i++) {
	            if (this.elements[i].key == _key) {
	                return this.elements[i].value;
	            }
	        }
	    } catch (e) {
	        return null;
	    }
	},

    //获取指定索引的元素(使用element.key,element.value获取key和value),失败返回null  
	this.element = function (_index) {
	    if (_index < 0 || _index >= this.elements.length) {
	        return null;
	    }
	    return this.elements[_index];
	},

    //判断Map中是否含有指定key的元素  
	this.containsKey = function (_key) {
	    var bln = false;
	    try {
	        for (i = 0; i < this.elements.length; i++) {
	            if (this.elements[i].key == _key) {
	                bln = true;
	            }
	        }
	    } catch (e) {
	        bln = false;
	    }
	    return bln;
	},

    //判断Map中是否含有指定value的元素  
	this.containsValue = function (_value) {
	    var bln = false;
	    try {
	        for (i = 0; i < this.elements.length; i++) {
	            if (this.elements[i].value == _value) {
	                bln = true;
	            }
	        }
	    } catch (e) {
	        bln = false;
	    }
	    return bln;
	},

    //获取Map中所有key的数组(array)  
	this.keys = function () {
	    var arr = new Array();
	    for (i = 0; i < this.elements.length; i++) {
	        arr.push(this.elements[i].key);
	    }
	    return arr;
	},

    //获取Map中所有value的数组(array)  
	this.values = function () {
	    var arr = new Array();
	    for (i = 0; i < this.elements.length; i++) {
	        arr.push(this.elements[i].value);
	    }
	    return arr;
	};
}


你可能感兴趣的:(js,map,封装)