JavaScript中模拟 Dictionary键值对

王朝学院·作者佚名  2011-12-23
窄屏简体版  字體:   |    |    |  超大  

原文发表在:http://www.birchlee.com/post/2011/10/19/27.aspx

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 '';

}

}

使用方法:创建一个全局的变量,操作这个全局变量就可以使用了。

在此抛砖引玉了

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航