一. JS中的Map形式
在js里面,有的时候,常常需要类似于Map的形式,进行键值对的处理,如写字典时,编号与名称进行对应, 编号与当前的对象进行对应。
二. JS代码
/**生成键值对集合*/ var initMap=function(){ var obj = { Set : function(key,value){this[key] = value}, Get : function(key){return this[key]}, Contains : function(key){return this.Get(key) == null?false:true}, Remove : function(key){delete this[key]} }; return obj; }
有map 中常用的方法, Set 放置值, Get 获取值, Contains 是否包含key 值, Remove 根据key 来移除值。
三.initMap 的使用
三.一 初始化
var userMap=initMap(); //不需要new。
三.二 放置值
userMap.Set("101","张三");
三.三 获取值
var name=userMap.Get("101"); //张三
三.四 是否包含值
if(userMap.Contains("101")){ console.log("包含101的值"); }else{ console.log("不包含101的值"); }
三.五 设置对象值
initMap 中的value,不仅可以是普通的值,也可以是对象的值。
// userList 为json对象。 $.each(userList,function(idx,item){ userMap.Set(item.user_code,item); })
将 编号 和那个编号所对应的对象放置到了map 里面。
获取值时可以这样:
if(userMap.Contains("101")){ console.log("名称是:"+userMap.Get("101").user_name); }
三.六 放置对象数组
不仅可以放置单个对象,也可以放置对象数组,如员工和部门时,一个员工可以有多个部门的情况。
//重置一下 userMap=initMap(); $.each(deptList,function(idx,item){ if(userMap.Contains(item.user_code){ userMap.Get(item.user_code).push(item); })else{ var arr=new Array(); arr.push(item); userMap.Set(item.user_code,arr); } })
当取出值时,取出来的是数组,按照数组进行解析数据。
谢谢!!!