在JS中创建HashMap对象


function HashMap(){

//定义长度

var length = 0;

//创建一个对象

var obj = new Object();



/**
* 判断Map是否为空
*/
this.isEmpty = function(){

return length == 0;

};



/**

* 判断对象中是否包含给定Key

*/

this.containsKey=function(key){

return (key in obj);

};



/**

* 判断对象中是否包含给定的Value

*/

this.containsValue=function(value){

for(var key in obj){

if(obj[key] == value){

return true;

}

}

return false;

};



/**

*向map中添加数据

*/

this.put=function(key,value){

if(!this.containsKey(key)){

length++;

}

obj[key] = value;

};



/**

* 根据给定的Key获得Value

*/

this.get=function(key){

return this.containsKey(key)?obj[key]:null;

};



/**

* 根据给定的Key删除一个值

*/

this.remove=function(key){

if(this.containsKey(key)&&(delete obj[key])){

length--;

}

};



/**

* 获得Map中的所有Value

*/

this.values=function(){

var _values= new Array();

for(var key in obj){

_values.push(obj[key]);

}

return _values;

};



/**

* 获得Map中的所有Key

*/

this.keySet=function(){

var _keys = new Array();

for(var key in obj){

_keys.push(key);

}

return _keys;

};



/**

* 获得Map的长度

*/

this.size = function(){

return length;

};



/**

* 清空Map

*/

this.clear = function(){

length = 0;

obj = new Object();

};

}

2.调用 

/**
 * *********  操作实例  **************
 *   var map = new HashMap();
 *   map.put("key1","Value1");
 *   map.put("key2","Value2");
 *   map.put("key3","Value3");
 *   map.put("key4","Value4");
 *   map.put("key5","Value5");
 *   alert("size:"+map.size()+" key1:"+map.get("key1"));
 *   map.remove("key1");
 *   map.put("key3","newValue");
 *   var values = map.values();
 *   for(var i in values){
*       document.write(i+":"+values[i]+"   ");
*   }
 *   document.write("<br>");
 *   var keySet = map.keySet();
 *   for(var i in keySet){
*       document.write(i+":"+keySet[i]+"  ");
*   }
 *   alert(map.isEmpty());
 */

3.js深度克隆

newobj : function(obj) {
    	 if(obj === null) return null 
    	    if(typeof obj !== 'object') return obj;
    	    if(obj.constructor===Date) return new Date(obj); 
    	    var newObj = new obj.constructor ();  //保持继承链
    	    for (var key in obj) {
    	        if (obj.hasOwnProperty(key)) {   //不遍历其原型链上的属性
    	            var val = obj[key];
    	            newObj[key] = typeof val === 'object' ? arguments.callee(val) : val; // 使用arguments.callee解除与函数名的耦合
    	        }
    	    } 
    	    return newObj;//返回深度克隆后的对象
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值