javascript常常遇到一些键值对,以前用二维数组实现,今天索性模拟了一下dictionary帮助类。
原理:创建一个对象,包含两个数组,键数组和值数组,调用javascript array对象的方法。
w3c参考地址:http://www.w3school.com.cn/js/jsref_obj_array.asp
builddictionary()方法用于创建一个包含两个数组的dictionary对象
additem方法 调用javascript的 array对象的push方法,用于将key,value追加到相应的数组。
updateitem方法用于更改相应的value
deleteitem方法 调用javascript的array对象的splice方法用于删除元素,第一个参数是需要删除的元素的index,第一个参数代表删除的个数。
getkeystr用于得到keys数组拼接后的字符串
getvaluestr用于得到values数组拼接后的字符串
共包含五个方法:
/*创建dictionary*/
function builddictionary() {
dic = new object();
dic.keys = new array(); //键数组
dic.values = new array(); //值数组
return dic;
}
/*添加 key,value*/
function additem(key, value, dic) {
var keycount = dic.keys.length;
if (keycount > 0) {
var flag = true;
for (var i = 0; i < keycount; i++) {
if (dic.keys[i] == key) {
flag = false;
break; //如果存在则不添加
}
}
if (flag) {
dic.keys.push(key)
dic.values.push(value);
}
}
else {
dic.keys.push(key)
dic.values.push(value);
}
return dic;
}
/*更改key,value*/
function updateitem(key, value, dic) {
var keycount = dic.keys.length;
if (keycount > 0) {
var flag = -1;
for (var i = 0; i < keycount; i++) {
if (dic.keys[i] == key) {
flag = i;
break; //查找相应的index
}
}
if (flag > -1) {
dic.keys[flag] = key;
dic.values[flag] = value;
}
return dic;
}
else {
return dic;
}
}
/*移除key value*/
function deleteitem(key, dic) {
var keycount = dic.keys.length;
if (keycount > 0) {
var flag = -1;
for (var i = 0; i < keycount; i++) {
if (dic.keys[i] == key) {
flag = i;
break; //查找相应的index
}
}
if (flag > -1) {
dic.keys.splice(flag,1); //移除
dic.values.splice(flag, 1); //移除
}
return dic;
}
else {
return dic;
}
}
/*获取key字符串,用符号拼接*/
function getkeystr(separator,dic)
{
var keycount=dic.keys.length;
if(keycount>0)
{
return dic.keys.join(separator);
}
else
{
return '';
}
}
/*获取value字符串,用符号拼接*/
function getvaluestr(separator,dic)
{
var keycount=dic.keys.length;
if(keycount>0)
{
return dic.values.join(separator);
}
else
{
return '';
}
}
使用方法:创建一个全局的变量,操作这个全局变量就可以使用了。
