/** * ********* 操作實例 ************** * 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中具體使用
var fundReconciliation = {} fundReconciliation.init = function () { } var businessList = null; var buUSmap = new HashMap(); fundReconciliation.init.prototype = { //手動對賬彈框 operatedAccount: function (busOrderNos, finanAmounts) { //資金數據 var finanAmountsList = finanAmounts.split(","); var finanAmountsInfo; var html = template("finanAmountsList", {"finanAmountsInfo": finanAmountsList}) $("#finanAmountsListTbody").html(html); //業務數據 for(var i=0;i<businessList.length;i++){ if ($("#souceCode").val() == 'unigift'){ buUSmap.put(businessList[i].billsNo.trim(),businessList[i].orderAmount.trim()) }else{ buUSmap.put(businessList[i].reportNo.trim(),businessList[i].orderAmount.trim()) } } var busHtml = template("businessList", {"businessList": businessList}) $("#businessListTbody").html(busHtml); //$("#operatedAccountModal").modal({show: true}); sDefiShowMessageSure({message: ""}); }, //工會手動確認對賬 operatedconfirmAccount : function () { $("#confirmAccountbuttn").click(function () { $("textarea[name='inputBillsNo']").each(function(h,item){ var amount = $(item.parentNode.parentNode).find("td:nth-child(2)").text().trim(); var inputBillsNos = item.value.split(","); var isError = false; var isPipei = false; for(var i=0;i<inputBillsNos.length;i++){ if(inputBillsNos[i].trim() == ""){ $(item.parentNode).find("span").text("報銷單號/禮包賬單號不能為空"); }else { for(var j=0;j<businessList.length;j++){ if($("#souceCode").val() == 'unigift'){ if(businessList[j].billsNo.trim()==inputBillsNos[i].trim()){ isPipei =true; break; } }else{ if(businessList[j].reportNo.trim()==inputBillsNos[i].trim()){ isPipei =true; break; } } } if(!isPipei){ //直接提示錯誤,清空map,重新添加業務數據 new fundReconciliation.init().buUSmapReturn(); $(item.parentNode).find("span").text("輸入的報銷單號/禮包賬單號不匹配"); }else { if(buUSmap.containsKey(inputBillsNos[i].trim())){ if(parseFloat(buUSmap.get(inputBillsNos[i].trim())) == amount){ if(i == inputBillsNos.length -1){ //對賬成功 buUSmap.remove(inputBillsNos[i].trim());//去掉這個單號 if($("textarea[name='inputBillsNo']").length -1 == h){ new fundReconciliation.init().operationSureAccount(); sDefiShowMessage({message: "對賬成功"}); $(this).parents('.sDefi-coverLayer').addClass('f-hide'); } }else { //直接提示錯誤,清空map,重新添加業務數據 new fundReconciliation.init().buUSmapReturn(); sDefiShowMessage({message: "報銷單號/禮包賬單號對應的金額不一樣,請重新確認"}); isError = true; break; } }else if(parseFloat(buUSmap.get(inputBillsNos[i].trim())) < amount){ if(i != inputBillsNos.length -1){ amount = amount - parseFloat(buUSmap.get(inputBillsNos[i].trim())); buUSmap.remove(inputBillsNos[i].trim());//去掉這個單號 //inputBillsNos.splice(i, 1); }else{ //直接提示錯誤,清空map,重新添加業務數據 new fundReconciliation.init().buUSmapReturn(); sDefiShowMessage({message: "報銷單號/禮包賬單號對應的金額不一樣,請重新確認"}); isError = true; break; } }else{ buUSmap.put(inputBillsNos[i].trim(),parseFloat(buUSmap.get(inputBillsNos[i].trim())) - amount); } }else{ //如果沒有指定的key //直接提示錯誤,清空map,重新添加業務數據 new fundReconciliation.init().buUSmapReturn(); //sDefiShowMessage({message: "輸入的報銷單號/禮包賬單號不匹配"}); sDefiShowMessage({message: "報銷單號/禮包賬單號對應的金額不一樣,請重新確認"}); isError = true; break; } } } }; if(isError){ return false; } }); }) }, buUSmapReturn : function () { buUSmap.clear(); for(var i=0;i<businessList.length;i++){ buUSmap.put(businessList[i].billsNo.trim(),businessList[i].orderAmount.trim()) } } } $(function () { var obj = new fundReconciliation.init(); obj.operatedconfirmAccount(); })