js模拟map集合

/** Map 用法.           //AM805 s
*  var map = new Map();
* map.put(" /. ][>?,国a", "aaa");
* map.put("b","bbb");
* map.put("cc","cccc");
* map.put("'/doc/xab[2]/test[1]'","ccc");
* map.remove("cc");
* var array = map.keySet();
* for(var i in array) {
* document.write("key:(" + array[i] +") <br>value: ("+map.get(array[i])+") <br>");
* }
*/

/**
* Map的构造函数
*/
function Map(){
    this.container = new Object();
}

/**
* 添加一个键-值
*/
Map.prototype.put = function(key, value){
    this.container[key] = value;
}

/**
* 通过键获取一个值
*/
Map.prototype.get = function(key){
    return this.container[key];
}

/**
* 返回该Map对象的键集合
*/
Map.prototype.keySet = function() {
    var keyset = new Array();
    var count = 0;
    for (var key in this.container) {
        // 跳过object的extend函数
        if (key == 'extend') {
            continue;
        }
        keyset[count] = key;
        count++;
    }
    return keyset;
}

/**
* 返回该Map对象的大小
*/
Map.prototype.size = function() {
    var count = 0;
    for (var key in this.container) {
        // 跳过object的extend函数
        if (key == 'extend'){
        continue;
        }
        count++;
    }
    return count;
}

/**
* 删除Map对象
*/
Map.prototype.remove = function(key) {
delete this.container[key];
}

/**
* 返回该Map对象的字符串形式
*/
Map.prototype.toString = function(){
    var str = "";
    for (var i = 0, keys = this.keySet(), len = keys.length; i < len; i++) {
        str = str + keys[i] + "=" + this.container[keys[i]] + ";
";
    }
    return str;
}
原文地址:https://www.cnblogs.com/gavenQin/p/5577447.html