天天看點

js封裝map

        在大三的時候,做電子商務網站的時候,前端頁面打包過來的資料都是json格式,為了更好的體驗,有的時候我們需要封裝url,需要我點選回退的時候,url位址欄目不變,其實我們在Android或者java裡面通常也會使用去通路其他網絡,或者去通路做第三方接口的時候,我們都需要對url按照一定的規範去封裝好,這個時候必不可少的一個資料結構就是map,java裡面的map用紅黑二叉樹實作,但是javascript需要自己去實作,下面就是一個簡單的對map封裝。

/**  
 * 
 */
function Map() {
 
    this.elements = new Array();
 
    this.size = function() {
        return this.elements.length;
    }
 
    this.isEmpty = function() {
        return (this.elements.length < 1);
    }
 
    this.clear = function() {
        this.elements = new Array();
    }
 
    this.put = function(_key, _value) {
        this.elements.push( {
            key : _key,
            value : _value
        });
    }
 
    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;
    }
 
    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;
        }
    }
 
    this.element = function(_index) {
        if (_index < 0 || _index >= this.elements.length) {
            return null;
        }
        return this.elements[_index];
    }
 
    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;
    }
 
    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;
    }
 
    this.values = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].value);
        }
        return arr;
    }
 
    this.keys = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].key);
        }
        return arr;
    }
}      

我們使用的時候和java差不多

Map map=new Map();
map.put("a",“student”);
var value=map.get("a");
console.log(value);      

我們可以從控制台列印出  student