js模仿 Map集合

来源:互联网 发布:视频点播软件哪个好 编辑:程序博客网 时间:2024/06/05 06:06
/** * * 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;    };}
0 0