结合prototype封装自定义的HashMap
来源:互联网 发布:mac系统被删除了 编辑:程序博客网 时间:2024/05/29 11:17
引言:
结合前两天项目中有几个功能需求类似:需要根据网格的列的标题获取对应的数据,当然最简单的就是每循环一次就后台调数据库查询返回json处理,但是频繁的访问后台,成本未免太高而且性能也不高,结合业务的实际情况,于是乎采用这样的思路,在第一次调用的时候就把后台数据保存到一个数据结构(通过列标题名就能获取到对应的信息),以后调用时候就不需要调用后台访问数据库了,毕竟前台的效率往往高于后台,可是JavaScript并没有所谓类似C#中的HashMap或者字典这样的数据结构,只能自己定义一个数据结构,其实数据结构就是自己封装的一个对象,自己定义具有哪些属性,然后对应这些具有哪些操作,结合自己的项目实际多多运用数据结构思想会让你的代码更易维护更具效能。今天忙完任务就整理如下:
代码:
function fn_HashMap(length){this.length=length;this.obj=new Object();}fn_HashMap.prototype={ isEmpty:function() { return this.length == 0; }, //判断对象中是否包含给定Key containsKey:function(key) { return (key in this.obj); }, //判断对象中是否包含给定的Value containsValue:function(value) { for (var key in this.obj) { if (this.obj[key] == value) { return true; } } return false; }, //向HashMap中添加数据 putData:function(key, value) { if (!this.containsKey(key)) { this.length++; } this.obj[key] = value; }, //根据给定的Key获得Value getValueByKey:function(key) { return this.containsKey(key) ? this.obj[key] : null; }, //根据给定的Key删除一个值 removeByKey:function(key, value) { if (this.containsKey(key) && (delete this.obj[key])) { this.length--; } }, //获取所有的value getAllValue :function () { var values = new Array(); for (var key in this.obj) { values.push(this.obj[key]); } return values; }, //获取所有的键值 getAllKeySets : function () { var keys = new Array(); for (var key in this.obj) { keys.push(key); } return keys; }, //获取HasMap的长度 getSize : function () { return this.length; }, clear : function () { this.length = 0; this.obj = new Object(); }}
简单测试:
function testMap(){var length=0;var p_atomHashMap=new fn_HashMap(length);var name="Dota2";var computeMark="CHINA";var computeExp="TI5"; p_atomHashMap.putData(name,{ComputeMark:computeMark,ComputeExp:computeExp}); p_atomHashMap.putData("key1","Value1"); p_atomHashMap.putData("key2","Value2"); p_atomHashMap.putData("key3","Value3"); p_atomHashMap.putData("key4","Value4"); //alert(p_atomHashMap.getValueByKey ("Dota2").ComputeMark);//alert("size:"+p_atomHashMap.getSize()+" name:"+p_atomHashMap.getValueByKey("Dota2"));//var keySet = p_atomHashMap.getAllValue(); var keySet = p_atomHashMap.getAllKeySets(); for(var i=0;i<keySet.length;i++){ alert(i+":"+keySet[i]+" "); } }
0 0
- 结合prototype封装自定义的HashMap
- JavaScript封装的HashMap
- Android布局文件.xml中的自定义属性(结合封装的自定义View)
- Freemarker模板获取HashMap重新封装类的问题(自定义类)
- 模仿prototype的ajax精简封装
- 封装--javascript的原型(prototype)
- 封装--javascript的原型(prototype)
- 剖析prototype框架的封装机制(OO特性,组件封装)
- 剖析prototype框架的封装机制(OO特性,组件封装)
- 自定义SharedPreferences的封装
- okhttp的自定义封装
- 关于struts2结合spring 创建action的思考 singleton prototype
- 针对HashMap的自定义排序
- HashMap集合的自定义实现
- 用javascript封装的一个HashMap
- HashMap封装查询到的数据
- 利用MVC模式,封装继承自定义组件,从plist文件读取数据,导航和工具栏的结合实例
- AppCompatActivity与toolbar的结合,封装BaseActivity
- 不使用Cygwin,在eclipse中快速开发JNI,一键生成C头文件.h,以及一键使用NDK交叉编译
- 黑马程序员——Java基础——集合(三)
- 关于prim算法的讨论:例:HDOJ1233——还是畅通工程
- (大数据之hadoop)hadoop2.2.0集群搭建
- 文章标题
- 结合prototype封装自定义的HashMap
- IOS两个App应用之间的跳转
- (大数据之hadoop)hadoop2.4.1集群搭建
- 几种软件滤波算法的原理和比较
- Android:wpa_supplicant决定选择哪种驱动
- id ,NSObject, id<NSObject>区别
- 页面中有<tbody>标签,自以为是更好的规范<table>标签的
- 模拟新浪微博随便看看
- _BLOCK_TYPE_IS_VALID(phead->nBlockuse)错误