东家蝴蝶西家飞,白骑少年今日归。 愿,所有迷茫的人,都不再迷茫的,愿,所有努力工作的人,都可以得到应有的回报,愿,所有的人,都可以找到回家的方向,愿,再无苦痛,再无离别。
上一章简单介绍了根据Select框的取值,动态显示另外的Div(十),如果没有看过,请观看上一章
一. 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);
}
})
当取出值时,取出来的是数组,按照数组进行解析数据。
谢谢!!!