JavaScript的实现的Map,用着挺方便的,不知道性能怎么样。
自己用只有不超过10个元素,所以性能无所谓了。
/********************jsmap.js**************************/
/////// map 类
function classMap() {
this.map = new Array();
var struct = function(key, value){
this.key = key;
this.value = value;
};
this.lookUp = function (key){
for (var i = 0; i < this.map.length; i++)
{
if ( this.map[i].key === key )
{
return this.map[i].value;
}
}
return null;
};
this.setAt = function (key, value){
for (var i = 0; i < this.map.length; i++)
{
if ( this.map[i].key === key )
{
this.map[i].value = value;
return;
}
}
this.map[this.map.length] = new struct(key,value);
};
this.removeKey = function removeKey(key){
var v;
for (var i = 0; i < this.map.length; i++)
{
v = this.map.pop();
if ( v.key === key )
continue;
this.map.unshift(v);
}
};
this.getCount = function(){
return this.map.length;
};
this.isEmpty = function(){
return this.map.length <= 0;
};
}
////////////////////////////////////////////////////////////////////////////////////////////////
/********************调用***********************/
window.onload = function(){
var map = new classMap();
alert("is the map empty? " + map.isEmpty());
// string to array
map.setAt("sw1", "aaaaa");
map.setAt("sw2", "bbbbb");
map.setAt("sw3", "ccccc");
alert(map.lookUp("sw1"));
alert(map.lookUp("sw2"));
alert(map.lookUp("sw3"));
alert(map.getCount());
}
/////////////////////////////////////////////////////////////////////////////////
/*************************************************maptest.html********************************************/
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<script>
function classMap() {
this.map = new Array();
var struct = function(key, value){
this.key = key;
this.value = value;
};
this.lookUp = function (key){
for (var i = 0; i < this.map.length; i++)
{
if ( this.map[i].key === key )
{
return this.map[i].value;
}
}
return null;
};
this.setAt = function (key, value){
for (var i = 0; i < this.map.length; i++)
{
if ( this.map[i].key === key )
{
this.map[i].value = value;
return;
}
}
this.map[this.map.length] = new struct(key,value);
};
this.removeKey = function removeKey(key){
var v;
for (var i = 0; i < this.map.length; i++)
{
v = this.map.pop();
if ( v.key === key )
continue;
this.map.unshift(v);
}
};
this.getCount = function(){
return this.map.length;
};
this.isEmpty = function(){
return this.map.length <= 0;
};
}
window.onload = function(){
var map = new classMap();
alert("is the map empty? " + map.isEmpty());
// string to array
map.setAt("sw1", "aaaaa");
map.setAt("sw2", "bbbbb");
map.setAt("sw3", "ccccc");
alert(map.lookUp("sw1"));
alert(map.lookUp("sw2"));
alert(map.lookUp("sw3"));
alert(map.getCount());
}
</script>
</body>
</html>
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////