/** * ********* 操作實例 ************** * 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