前言:
我在开发中利用的这个方法主要是编写前台表格 多选、单选、批量导出等存储键值对,传到后台再进行业务逻辑处理。使用方法和java中Map类同。
JS书写方法:
/**
*
* 描述:js实现的map方法
* @returns {Map}
*/
function Map(){
var each = function(fn){
if(typeof fn != 'function'){
return;
}
var len = this.arr.length;
for(var i=0;i<len;i++){
var k = this.arr[i].key;
fn(k,this.arr[i].value,i);
}
}
var struct = function(key, value) {
this.key = key;
this.value = value;
};
// 添加map键值对
var put = function(key, value){
for (var i = 0; i < this.arr.length; i++) {
if ( this.arr[i].key === key ) {
this.arr[i].value = value;
return;
}
};
this.arr[this.arr.length] = new struct(key, value);
};
// 根据key获取value
var get = function(key) {
for (var i = 0; i < this.arr.length; i++) {
if ( this.arr[i].key === key ) {
return this.arr[i].value;
}
}
return null;
};
// 根据key删除
var remove = function(key) {
var v;
for (var i = 0; i < this.arr.length; i++) {
v = this.arr.pop();
if ( v.key === key ) {
continue;
}
this.arr.unshift(v);
}
};
// 获取map键值对个数
var size = function() {
return this.arr.length;
};
// 判断map是否为空
var isEmpty = function() {
return this.arr.length <= 0;
};
this.arr = new Array();
this.get = get;
this.put = put;
this.each = each;
this.remove = remove;
this.size = size;
this.isEmpty = isEmpty;
} ;
测试代码数据:
<script type="text/javascript">
var map=new Map();
map.put("nums",1);
map.put("ddd,"sdd");
map.remove("nums");
console.log(map.size());
console.log(map.get("num"));
console.log(map.size());
console.log(map.get("nums"));
console.log(map);
</script>