不废话了,直接贴代码了。
代码一:
var map=new Map();
map.put(\"a\",\"A\");map.put(\"b\",\"B\");map.put(\"c\",\"C\");
map.get(\"a\"); //返回:A
map.entrySet() // 返回Entity[{key,value},{key,value}]
map.containsKey(\'kevin\') //返回:false
function Map() {
this.keys = new Array();
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) {
if(this.data[key] == null){
this.keys.push(key);
this.data[key] = value;
}else{
this.data[key]=this.data[key];
}
return true;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) {
return this.data[key];
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) {
for(var i=0;i<this.keys.length;i++){
if(key===this.keys[i]){
var del_keys= this.keys.splice(i,1);
for(k in del_keys){
this.data[k] = null;
}
return true;
}
}
return false;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != \'function\'){
return;
}
var len = this.keys.length;
for(var i=0;i<len;i++){
var k = this.keys[i];
fn(k,this.data[k],i);
}
};
/**
* 获取键值数组
* @return entity[{key,value},{key,value}]
*/
this.entrySet = function() {
var len = this.keys.length;
var entrys = new Array(len);
for (var i = 0; i < len; i++) {
entrys[i] = {
key : this.keys[i],
value : this.data[this.keys[i]]
};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function() {
return this.keys.length == 0;
};
/**
* 获取键值对数量
*/
this.size = function(){
return this.keys.length;
};
this.containsKey=function(key){
return this.keys.filter(function(v){
if(v===key){
return key;
}
}).length>0;
};
/**
* 重写toString
*/
this.toString = function(){
var s = \"{\";
for(var i=0;i<this.keys.length;i++){
var k = this.keys[i];
s += k+\"=\"+this.data[k];
if(this.keys.length>i+1){
s+=\',\'
}
}
s+=\"}\";
return s;
};
/**
* 解析字符串到Map
* {a=A,b=B,c=B,}
*/
this.parserStringAndAddMap=function(str){
var count=0;
if(str && str.length>0){
str=str.trim();
var startIndex=str.indexOf(\"{\"),endIndex=str.lastIndexOf(\"}\");
if(startIndex!==-1 && endIndex!==-1){
str=str.substring(startIndex+1,endIndex);
var arrs= str.split(\",\");
for(var i=0;i<arrs.length;i++){
var kv=arrs[i].trim();
if(kv.length>0 && kv.indexOf(\"=\")!==-1){
var kv_arr=kv.split(\"=\");
if(kv_arr.length==2){
if(this.put(kv_arr[0].trim(),kv_arr[1].trim())){
count++;
}else{
console.error(\'error: kv:\'+kv);
}
}
}
}
}else{
console.log(\"data error:\"+str);
}
}else{
console.log(\'data is not empty\');
}
return count;
};
}
代码二:
Array.prototype.remove = function(s) {
for (var i = 0; i < this.length; i++) {
if (s == this[i])
this.splice(i, 1);
}
}
/**
* Simple Map
*
*
* var m = new Map();
* m.put(\'key\',\'value\');
* ...
* var s = \"\";
* m.each(function(key,value,index){
* s += index+\":\"+ key+\"=\"+value+\"\\n\";
* });
* alert(s);
*
* @author dewitt
* @date 2008-05-24
*/
function Map() {
/** 存放键的数组(遍历用到) */
this.keys = new Array();
/** 存放数据 */
this.data = new Object();
/**
* 放入一个键值对
* @param {String} key
* @param {Object} value
*/
this.put = function(key, value) {
if(this.data[key] == null){
this.keys.push(key);
}
this.data[key] = value;
};
/**
* 获取某键对应的值
* @param {String} key
* @return {Object} value
*/
this.get = function(key) {
return this.data[key];
};
/**
* 删除一个键值对
* @param {String} key
*/
this.remove = function(key) {
this.keys.remove(key);
this.data[key] = null;
};
/**
* 遍历Map,执行处理函数
*
* @param {Function} 回调函数 function(key,value,index){..}
*/
this.each = function(fn){
if(typeof fn != \'function\'){
return;
}
var len = this.keys.length;
for(var i=0;i<len;i++){
var k = this.keys[i];
fn(k,this.data[k],i);
}
};
/**
* 获取键值数组(类似Java的entrySet())
* @return 键值对象{key,value}的数组
*/
this.entrys = function() {
var len = this.keys.length;
var entrys = new Array(len);
for (var i = 0; i < len; i++) {
entrys[i] = {
key : this.keys[i],
value : this.data[i]
};
}
return entrys;
};
/**
* 判断Map是否为空
*/
this.isEmpty = function() {
return this.keys.length == 0;
};
/**
* 获取键值对数量
*/
this.size = function(){
return this.keys.length;
};
/**
* 重写toString
*/
this.toString = function(){
var s = \"{\";
for(var i=0;i<this.keys.length;i++,s+=\',\'){
var k = this.keys[i];
s += k+\"=\"+this.data[k];
}
s+=\"}\";
return s;
};
}
function testMap(){
var m = new Map();
m.put(\'key1\',\'Comtop\');
m.put(\'key2\',\'南方电网\');
m.put(\'key3\',\'景新花园\');
alert(\"init:\"+m);
m.put(\'key1\',\'康拓普\');
alert(\"set key1:\"+m);
m.remove(\"key2\");
alert(\"remove key2: \"+m);
var s =\"\";
m.each(function(key,value,index){
s += index+\":\"+ key+\"=\"+value+\"\\n\";
});
alert(s);
}
以上内容通过两段代码给大家分享了JavaScript中实现Map,希望大家喜欢。
本文地址:https://www.stayed.cn/item/10984
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我