搜了js实现map的文章,很多都是数组,需要遍历,个人认为性能很差,看到一篇用js动态添加属行 实现的文章, 拿过来根据自己需要改了下.
function Map() {
/** 存放数据 */
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) {
this.data[key] = value;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) {
return this.data[key];
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) {
delete this.data[key] ;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != 'function'){
return;
}
for(x in this.data){
fn(x,this.data[x]);
}
};
/**
* 判断Map是否为空
*/
this.isNull = function() {
for(x in this.data){
return false;
}
return true;
};
/**
* 获取键值对数量
*/
this.size = function(){
var i = 0;
for(x in this.data){
i++;
}
return i;
};
/**
* 重写toString
*/
this.toString = function(){
var s = "{";
for( x in this.data ){
s += x+"="+this.data[x]+",";
}
s+="}";
return s;
};
};