JS中的Map形式(十一)

东家蝴蝶西家飞,白骑少年今日归。 愿,所有迷茫的人,都不再迷茫的,愿,所有努力工作的人,都可以得到应有的回报,愿,所有的人,都可以找到回家的方向,愿,再无苦痛,再无离别。

上一章简单介绍了根据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);
	}

})

当取出值时,取出来的是数组,按照数组进行解析数据。

谢谢!!!

你可能感兴趣的:(JS前端小方法)