原文發表在: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 '';
}
}
使用方法:建立一個全域的變數,操作這個全域變數就可以使用了。
在此拋磚引玉了