您好,欢迎访问一九零五行业门户网

JavaScript中模拟 Dictionary键值对

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 '';
  }
}
使用方法:创建一个全局的变量,操作这个全局变量就可以使用了。
其它类似信息

推荐信息