JavaScript中模拟 Dictionary键值对
2011-10-21 23:13
399 查看
原文发表在: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 '';
}
}
使用方法:创建一个全局的变量,操作这个全局变量就可以使用了。
在此抛砖引玉了
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 '';
}
}
使用方法:创建一个全局的变量,操作这个全局变量就可以使用了。
在此抛砖引玉了
相关文章推荐
- JavaScript中模拟 Dictionary键值对
- 在javascript中方便的使用Dictionary实现键值对应
- JavaScript中模拟java的map键值统计一段英文中各个单词出现的次数
- JavaScript之bind及bind的模拟实现
- HTML5 JavaScript模拟流体效果
- 浅谈Javascript事件模拟
- HTML5实验:JavaScript模拟流体效果
- javascript 模拟坦克大战游戏(html5版)
- javascript利用对象键值对中键的唯一性实现数组去重
- JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)
- 自己用JavaScript写的一个很简单的骰子大小赌博模拟
- javascript实现的弹出层背景置灰-模拟(easyui dialog)
- javascript实现省市区三级联动选择的代码(数据为模拟json数据)
- JavaScript:多维数组像ORDER BY一样实现多键值排序
- 模拟时间片轮转的JavaScript实现
- JavaScript中模拟实现类似于Java的super关键字调用父类中同名方法
- Dictionary读取键值的快捷方法
- Javascript 模拟弹出windows窗口
- javascript模拟的Ping效果代码 (Web Ping)
- c# 将json中的数据转为键值的形式放入字典Dictionary并进行拼接md5加密