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

转载于:https://www.cnblogs.com/jcjssl/p/9371425.html

JS实现HashMap相关推荐

  1. getparameter的使用

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

  2. javascript基础知识大全

    发些javascript基础知识,便于大家学习,也便于我自己查看  1.javascript的数组API  [js]  <pre>//定义数组  var pageIds = new Arr ...

  3. 在js中使用HashMap数据结构,在js中使用K,V数据结构

    首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...

  4. js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...

    原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...

  5. json数组 js html标签,js定义json对象数组 json 数组也是数组 //

    var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...

  6. 使用ajaxfileupload.js实现文件上传

    ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url  上传处理程序地址. 2,file ...

  7. Java 集合系列10: HashMap深入解析(2)

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 QQ群:766946816 概述 这接着上一篇的文章的内容. 第3.1部 ...

  8. Java 集合系列10: HashMap深入解析(1)

    戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 QQ群:766946816 概要 这一章,我们对HashMap进行学习. ...

  9. 阿里天气数据接口调用实现(Java和JS)

    Java实现方式 主要代码: package com.wheather;import java.util.HashMap; import java.util.Map;import org.apache ...

最新文章

  1. WindML相关知识和图形设备驱动程序开发(一)
  2. mysql怎么测试事物_mysql事务简单测试
  3. ubuntu 16.0.4 配置 tensorflow-gpu 1.1.0
  4. cesium 3dtiles 加载本地数据_cesium结合geoserver实现地图空间查询(附源码下载)
  5. 推荐 | 8 个 SpringBoot 精选项目
  6. position 的属性值
  7. 二维数组的查找 java_查找二维数组java的总和
  8. 面试官 | 线程间是如何通信的?
  9. python数组_Python数组
  10. LeetCode之3Sum Closest(Kotlin)
  11. ToDesk 远程软件推荐测评
  12. linux镜像文件下载
  13. android 动态修改pdf,PDF编辑器安卓版,手机也能修改PDF文档
  14. cookie基础知识
  15. ajax ruby,在Ruby on Rails中使用AJAX的教程
  16. PDF文档转换为图片、图片转成PDF 及PDF合并
  17. Java拼图游戏总结,Java拼图游戏课程设计报告
  18. 多线程面试题(高薪高频)
  19. css实现 拟态按钮
  20. 磁共振t1t2信号记忆顺口溜_MRI的T1和T2

热门文章

  1. MSTAR SETBOX 常用API
  2. mySQL Slow Query Log Rotation(慢查询日志轮循设置)
  3. Java基础学习总结(31)——Java思维导图
  4. 用委托在listbox中异步显示信息,解决线程间操作无效,从不是创建控件的线程访问它...
  5. Linux下使用dmidecode查看服务器的详细的硬件配置
  6. 腾讯3366小游戏站算法被破解
  7. 你最常用的构建和发布管理工具是什么
  8. Java常用消息队列原理介绍及性能对比
  9. Windows下的磁盘管理(二)
  10. Boost 编译链接