码迷,mamicode.com
首页 > 编程语言 > 详细

javascript 实现类似Java中的hashmap

时间:2015-07-07 14:57:43      阅读:156      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!