首页 > 编程语言 > 详细

javascript 实现类似Java中的hashmap

时间:2015-07-07 14:55:12      阅读:136      评论:0      收藏:0      [点我收藏+]

应用场景:

想把函数和函数对应的数据比较直观的存储起来

突然觉得Javascript中的object不够用了  所以自己仿了个java中的hashmap

key支持任何Javascript类型的数据 但是NaN Undefined 这种类型的没有实验 

以下是源码

function hashmapfn(){
    		var p={
    			rkey:7,
    			size:0,
    			obj:{}
    		};

    		function getKey(key){
    			if(typeof key==‘object‘||typeof key===‘function‘) return key.__key;
    			return key;
    		}
    		function autokey(){
    			var key="diqye_$";
    			key+=p.rkey;
    			p.rkey++;
    			return key;
    		}
    		function setKey(key){
    			if(typeof key==‘object‘||typeof key===‘function‘) return key.__key=autokey();
    			return key;
    		}
    		function contains(key){
    			return p.obj[getKey(key)]!=null;
    		}
    		function put(key,val){
    			if(!contains(key))p.size++;
    			p.obj[setKey(key)]=val;
    		}
    		function get(key){
    			return p.obj[getKey(key)];
    		}
    		function remove(key){
    			if(contains(key)){
    				p.size--;
    				delete p.obj[getKey(key)];
    			}
    		}
    		function size(){
    			return p.size;
    		}
    		return {
    			contains:contains,
    			get:get,
    			put:put,
    			size:size,
    			remove:remove,
    			p:p
    		}

    	}


    	var k1=/   /g,k2=/  /g,k3=function(){},k4=‘key‘;
    	var hashmap=hashmapfn();
    	hashmap.put(k1,1);
    	hashmap.put(k2,2);
    	hashmap.put(k3,3);
    	hashmap.put(k4,4);
    	console.log(hashmap.get(k1));
    	console.log(hashmap.get(k2));
    	console.log(hashmap.get(k3));
    	console.log(hashmap.get(k4));


javascript 实现类似Java中的hashmap

原文:http://my.oschina.net/diqye/blog/475629

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!