javascript 實現相似Java中的hashmap

應用場景:java

想把函數和函數對應的數據比較直觀的存儲起來函數

忽然以爲Javascript中的object不夠用了  因此本身仿了個java中的hashmapcode

key支持任何Javascript類型的數據 可是NaN Undefined 這種類型的沒有實驗 ip

如下是源碼rem

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));
相關文章
相關標籤/搜索