/**
* ********* 操作实例 **************
* 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());
*/ 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();
};
}

针对于以上的代码,是在网上找的写的自认为好点的js中实现HashMap的例子,便于以后自己查询和使用

eg:如果像以下情况,修改时,输入的排序值不能重复,可使用以上的HashMap中的containsKey

具体代码:

    //保存
$("#save_btn").click(function(){
var dataTr=$("#detail_table").find(".tr-data");
var hasData=false;
var passCheck=true;
var temp=null;//定义一个临时变量
var map = new HashMap();//创建一个HashMap对象
for(var i=0;i<dataTr.length;i++){
var $tr=$(dataTr[i]);
var $dictName=$tr.find('td[col="dictName"]').children('input');
var $dispOrder=$tr.find('td[col="dispOrder"]').children('input');
if($dictName.val()||$dispOrder.val()){
hasData=true;
}
//检查输入的排序是否重复
if($dispOrder.val()){
temp=$dispOrder.val();//得到排序文本框的值
if(temp=='0'){
Dol.alert.warning({
content:"排序必须大于0"
});
passCheck=false;
}
if(map.size()==0){
map.put(temp, (i + 1) + "");//第一次进来,先将第一个值存放在map中
}else{//map中有值时
if (map.containsKey(temp)) {//判断map中是否已包含temp,如果包含,提示重复
Dol.alert.warning({
content:"排序值有重复"
});
passCheck=false;
return false;
} else {//如果没有包含temp,则将temp存入map
map.put(temp, (i + 1) + "");
}
}
} if(!checkRowData($tr)){
passCheck=false;
}
} if(!passCheck){
return;
} $('#editForm').ajaxSubmit({
url: '${basePath}/dict/dict_editDict.do',
type:'post',
dataType:'json',
success: function(data) {
if(data){
if(data.isSuccess){
Dol.alert.success({
content:"修改成功",
'onclose':function(){
/* window.location.href="${basePath}/dict/dict_showDictList.do"; */
Dol.reloadParent();
window.close();
}
});
}else{
Dol.alert.error({content:"修改失败"});
}
}
},
});
Dol.disabledBtn("save_btn");
});
既然new了HashMap,必须有HashMap
所以在js中要写

function HashMap(){
//定义长度
var length = 0;
//创建一个对象
var obj = new Object();
/**
* 判断对象中是否包含给定Key
*/
this.containsKey=function(key){
return (key in obj);
};
/**
*向map中添加数据
*/
this.put=function(key,value){
if(!this.containsKey(key)){
length++;
}
obj[key] = value;
};
/**
* 获得Map的长度
*/
this.size = function(){
return length;
};

}

这样才能使用HashMap

JS实现HashMap的更多相关文章

  1. 学习Redis你必须了解的数据结构——HashMap实现

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接博客园蜗牛 cnblogs.com\tdws . 首先提供一种获取hashCode的方法,是一种比较受欢迎的方式,该方法参照了一位园友的 ...

  2. JavaScript——HashMap实现

    本文版权归博客园和作者吴双本人共同所有,转载和爬虫请注明原文链接博客园蜗牛 cnblogs.com\tdws . 首先提供一种获取hashCode的方法,是一种比较受欢迎的方式,该方法参照了一位园友的 ...

  3. 信息系统实践手记6-JS调用Flex的性能问题一例

    说明:信息系统实践手记系列是系笔者在平时研发中先后遇到的大小的问题,也许朴实和细微,但往往却是经常遇到的问题.笔者对其中比较典型的加以收集,描述,归纳和分享. 摘要:此文描述了笔者接触过的部分信息系统 ...

  4. vue-cli +echarts-amap集成echarts和高德地图TypeError: Cannot read property 'dataToPoint' of null解决方案

    由于项目的需求,需要做一种迁徙效果, 最后我们采用了组件化开发,可以说这个坑自己一个人踩,有点累,但也收获不少. vue-cli +echarts-amap集成echarts和高德地图,出现报错,错误 ...

  5. getparameter的使用

    在做项目的过程中,会遇到跳转的页面,直接打开到里面的子项,这个时候,看了UI给我设计了四个页面,如果做四个页面,肯定是可以实现的.但是这个不符合前端的设计.就在想通过点击传值进去,肯定是能够获取到的. ...

  6. 2016-04-25-信息系统实践手记6-JS调用Flex的性能问题一例

    layout: post title: 2016-04-25-信息系统实践手记6-JS调用Flex的性能问题一例 key: 20160425 tags: GIS JS FLEX 技术选型 性能 API ...

  7. JS hashMap实例详解

    链接:http://www.jb51.net/article/85111.htm JS hashMap实例详解 作者:囧侠 字体:[增加 减小] 类型:转载 时间:2016-05-26我要评论 这篇文 ...

  8. js数组,数字函数,字符串函数,表单验证,hashMap,堆栈,日期函数,call函数

    1.javascript的数组API Js代码 收藏代码 //定义数组 var pageIds = new Array(); pageIds.push('A'); 数组长度 pageIds.lengt ...

  9. js hashMap

    /** * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, ...

随机推荐

  1. 修改oracle占用的8080端口

    Oracle10g在安装完成后,默认占用8080端口,而这个端口也是Tomcat 的默认端口.如果想改Oracle的默认8080端口的话可以这么做: 步骤一:运行cmd,输入sqlplus / as ...

  2. 【译】Permissions Best Practices Android M权限最佳做法

    Permissions Best Practices PreviousNext In this document Consider Using an Intent Don't Overwhelm th ...

  3. java目录与classpath

    目录结构 描述 jdk bin            编译器和工具 demo             演示 docs              HTML格式的类库文档 include         ...

  4. iOS开发技巧-2

    1,打印View所有子视图 po [[self view]recursiveDescription] 2,layoutSubviews调用的调用时机 * 当视图第一次显示的时候会被调用 * 当这个视图 ...

  5. 工作偶遇小bug

    1.下面这个在,调试一个单片机定时器是遇到的,整了一上午才找到,晕! 编译器是不认为它是错误的,所以,就你怎么运行都不是你想要结果。 2.使用pic单片机过程中,使用AD口时,相应端口的方向必须设为输 ...

  6. 使用strace 工具跟踪系统调用和信号

    使用strace来执行程序,它会记录程序执行过程中调用,接收到的信号,通过查看记录结果,就可以知道程序打开哪些文件,进行哪些读写,映射哪些内存,向系统申请多少内存等信息 strace 移植 下载str ...

  7. Activity Intent相关FLAG介绍

    先首先简单介绍下Task和Activity的关系   Task就像一个容器,而Activity就相当与填充这个容器的东西,第一个东西(Activity)则会处于最下面,最后添加的东西(Activity ...

  8. git基本技巧及进阶

    基本技巧 1. 安装后的第一步 在安装好git后,你第一件该做的事是设置你的名字和电子邮箱,因为每次提交都要用到这些信息: $ git config --global user.name " ...

  9. Javascript生成随机数

    随机数在前后端都比较常用,用途也较广.这里记录一下前端的实现方法,代码比较简单,封装成函数可随时调用. 具体如下: function getRandNum(n){ return Math.floor( ...

  10. impress.js webslide 参数

    data-transition-duration="2000" 改变切换场景的速度,默认1000data-perspective="500" 改变透视的深度,默 ...