JS实现HashMap
/*** ********* 操作实例 *************** 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相关推荐
- getparameter的使用
在做项目的过程中,会遇到跳转的页面,直接打开到里面的子项,这个时候,看了UI给我设计了四个页面,如果做四个页面,肯定是可以实现的.但是这个不符合前端的设计.就在想通过点击传值进去,肯定是能够获取到的. ...
- javascript基础知识大全
发些javascript基础知识,便于大家学习,也便于我自己查看 1.javascript的数组API [js] <pre>//定义数组 var pageIds = new Arr ...
- 在js中使用HashMap数据结构,在js中使用K,V数据结构
首先是定义一个HashMap方法,做基类(复制在js中即可,然后引用) //简单的哈希表,begin function HashMap() {/** Map 大小 * */var size = 0;/ ...
- js去el的map_转:el表达式获取map对象的内容 js中使用el表达式 js 中使用jstl 实现 session.removeattribute...
原文链接: 总结: el表达式获取map对象的内容 后端: HashMap map1 = new HashMap(); map1.put("key1","lzsb&quo ...
- json数组 js html标签,js定义json对象数组 json 数组也是数组 //
var jsonstr="[{'name':'a','value':1},{'name':'b','value':2}]"; var jsonarray = eval('('+js ...
- 使用ajaxfileupload.js实现文件上传
ajaxFileUpload是一个异步上传文件的jQuery插件 语法:$.ajaxFileUpload([options]) options参数说明: 1.url 上传处理程序地址. 2,file ...
- Java 集合系列10: HashMap深入解析(2)
戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 QQ群:766946816 概述 这接着上一篇的文章的内容. 第3.1部 ...
- Java 集合系列10: HashMap深入解析(1)
戳上面的蓝字关注我们哦! 精彩内容 精选java等全套视频教程 精选java电子图书 大数据视频教程精选 java项目练习精选 QQ群:766946816 概要 这一章,我们对HashMap进行学习. ...
- 阿里天气数据接口调用实现(Java和JS)
Java实现方式 主要代码: package com.wheather;import java.util.HashMap; import java.util.Map;import org.apache ...
最新文章
- WindML相关知识和图形设备驱动程序开发(一)
- mysql怎么测试事物_mysql事务简单测试
- ubuntu 16.0.4 配置 tensorflow-gpu 1.1.0
- cesium 3dtiles 加载本地数据_cesium结合geoserver实现地图空间查询(附源码下载)
- 推荐 | 8 个 SpringBoot 精选项目
- position 的属性值
- 二维数组的查找 java_查找二维数组java的总和
- 面试官 | 线程间是如何通信的?
- python数组_Python数组
- LeetCode之3Sum Closest(Kotlin)
- ToDesk 远程软件推荐测评
- linux镜像文件下载
- android 动态修改pdf,PDF编辑器安卓版,手机也能修改PDF文档
- cookie基础知识
- ajax ruby,在Ruby on Rails中使用AJAX的教程
- PDF文档转换为图片、图片转成PDF 及PDF合并
- Java拼图游戏总结,Java拼图游戏课程设计报告
- 多线程面试题(高薪高频)
- css实现 拟态按钮
- 磁共振t1t2信号记忆顺口溜_MRI的T1和T2