- source page : http://www.iteye.com/topic/196610
-
Array.prototype.remove =
function
(s) {
-
for
(
var
i = 0; i <
this
.length; i++) {
-
if
(s ==
this
[i])
-
this
.splice(i, 1);
-
}
-
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
function
Map() {
-
-
this
.keys =
new
Array();
-
-
this
.data =
new
Object();
-
-
-
-
-
-
-
this
.put =
function
(key, value) {
-
if
(
this
.data[key] ==
null
){
-
this
.keys.push(key);
-
}
-
this
.data[key] = value;
-
};
-
-
-
-
-
-
-
this
.get =
function
(key) {
-
return
this
.data[key];
-
};
-
-
-
-
-
-
this
.remove =
function
(key) {
-
this
.keys.remove(key);
-
this
.data[key] =
null
;
-
};
-
-
-
-
-
-
-
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);
-
}
-
};
-
-
-
-
-
-
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;
-
};
-
-
-
-
-
this
.isEmpty =
function
() {
-
return
this
.keys.length == 0;
-
};
-
-
-
-
-
this
.size =
function
(){
-
return
this
.keys.length;
-
};
-
-
-
-
-
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);
-
}
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);
}
//testMap.htm
-
<
html
>
-
<
head
>
-
<
title
>
Test Map
</
title
>
-
<
script
language
=
"javascript"
src
=
"map.js"
>
-
</
script
>
-
</
head
>
-
<
body
>
-
<
input
type
=
"button"
value
=
"test"
onclick
=
"testMap()"
>
-
</
body
>
-
</
html
>