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