一. Map形式的定义
在JS处理数据的时候,常常要用到类似Java 的Map 形式,早期的时候是没有Map 的,目前版本是有Map 形式的。 Map对象的定义为:
function Map() { //当前的所有元素值,内部数组。 this.elements = new Array(); //获取MAP元素个数 this.size = function() { return this.elements.length; } //判断MAP是否为空 this.isEmpty = function() { return(this.elements.length < 1); } //删除MAP所有元素 this.clear = function() { this.elements = new Array(); } //向MAP中增加元素(key, value) this.put = function(_key, _value) { this.elements.push( { key : _key, value : _value }); } //设置指定KEY的元素值VALUE,失败不执行 this.set = function(_key,_value) { for(i = 0; i < this.elements.length; i++) { if(this.elements[i].key == _key) { this.elements[i].value = _value; return; } } } //删除指定KEY的元素,成功返回True,失败返回False this.remove = function(_key) { var bln = false; try{ for(i = 0; i < this.elements.length; i++) { if(this.elements[i].key == _key) { this.elements.splice(i, 1); return true; } } } catch(e) { bln = false; } return bln; } //获取指定KEY的元素值VALUE,失败返回NULL this.get = function(_key) { try{ for(i = 0; i < this.elements.length; i++) { if(this.elements[i].key == _key) { return this.elements[i].value; } } } catch(e) { return null; } } //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL this.element = function(_index) { if(_index < 0 || _index >= this.elements.length) { return null; } return this.elements[_index]; } //判断MAP中是否含有指定KEY的元素 this.containsKey = function(_key) { bln = false; try{ for(i = 0; i < this.elements.length; i++) { if(this.elements[i].key == _key) { bln = true; } } } catch(e) { bln = false; } return bln; } //判断MAP中是否含有指定VALUE的元素 this.containsValue = function(_value) { var bln = false; try{ for(i = 0; i < this.elements.length; i++) { if(this.elements[i].value == _value) { bln = true; } } } catch(e) { bln = false; } return bln; } //获取MAP中所有VALUE的数组(ARRAY) this.values = function() { var arr = new Array(); for(i = 0; i < this.elements.length; i++) { arr.push(this.elements[i].value); } return arr; } //获取MAP中所有KEY的数组(ARRAY) this.keys = function() { var arr = new Array(); for(i = 0; i < this.elements.length; i++) { arr.push(this.elements[i].key); } return arr; } }
二. Map 的使用
二.一 初始化对象
var subjMap=new Map();
二.二 放置值 put(key,value) 方法
subjMap.put("101","map的形式");
二.三 取出值 get(key)方法
var name=subjMap.get("101");
二.四 判断是否为空 isEmpty() 方法
if(subjMap.isEmpty()){ alert("没有数据"); }else{ alert("有数据"); }
二.五 map的长度 size() 方法
alert("长度是:"+subjMap.size());
二.六 清空数据 clear()
subjMap.clear();
二.七 重新设置值 set(key,value) 方法
subjMap.set("101","重新设置值");
二.八 移除值 remove(key) 方法
subjMap.remove("101");
二.九 根据索引来取出值 element(key)
var obj=subjMap.element("101");
二.十 是否包含containsKey(key) 方法
if(subjMap.containsKey("101")){ alert("包含该key值"); }
二.十一 包含值 containsValue(value) 方法
if(subjMap.containsValue("重新设置值")){ alert("包含该value值"); }
二.十二 遍历所有keys()
var keyArr=subjMap.keys();
二.十三 遍历所有values()
var valueArr=subjMap.values();
三.常用技巧
- 设置值时用 put, 取出时用get
- 清空时,用.clear() 即可
- 判断是否为空时,可以用.size() 长度。
谢谢!!!