原文發表在:http://www.birchlee.com/post/2011/10/19/27.aspx數組
JavaScript經常遇到一些鍵值對,之前用二維數組實現,今天索性模擬了一下Dictionary幫助類。post
原理:建立一個對象,包含兩個數組,鍵數組和值數組,調用JavaScript Array對象的方法。ui
W3C參考地址:http://www.w3school.com.cn/js/jsref_obj_array.aspspa
BuildDictionary()方法用於建立一個包含兩個數組的Dictionary對象對象
AddItem方法 調用JavaScript的 Array對象的push方法,用於將key,value追加到相應的數組。ip
UpdateItem方法用於更改相應的value字符串
DeleteItem方法 調用JavaScript的Array對象的Splice方法用於刪除元素,第一個參數是須要刪除的元素的index,第一個參數表明刪除的個數。get
GetKeyStr用於獲得Keys數組拼接後的字符串io
GetValueStr用於獲得Values數組拼接後的字符串function
共包含五個方法:
/*建立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 '';
}
}
使用方法:建立一個全局的變量,操做這個全局變量就能夠使用了。
在此拋磚引玉了