`
birchlee
  • 浏览: 4634 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaScript中模拟 Dictionary键值对

阅读更多
原文发表在: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 '';
   }
}

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

在此抛砖引玉了
0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics