原文发表在: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键盘虚拟键值编码表 Javascript键盘虚拟键值编码表
javascript 键盘键值.txt
javaScript简单模拟计算器简单易懂
使用JavaScript模拟select
NULL 博文链接:https://minjiechenjava.iteye.com/blog/2008167
用于Javascript模拟训练,提升对Javascript的了解
主要介绍了javascript触发模拟鼠标点击事件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Javascript模拟的DOS窗口Javascript模拟的DOS窗口
用javascript写的模拟windowxp关机效果的demo。 供初学者参考使用。
本文实例讲述了JS动态遍历json中所有键值对的方法。分享给大家供大家参考,具体如下: JavaScript中使用ajax技术访问后台资源的时候,常常使用json作为轻量级数据传输格式。json类似于Java中的HashMap,是由一系列的...
在JavaScript中模拟类(class)及类的继承关系_.docx
一个javascript模拟的 虚拟键盘,效果非常棒!
模拟窗口 js javascript 模拟窗口 js javascript 模拟窗口 js javascript
在讲授JavaSript课程第七章时,发现课件中没有把JavaScript的数组讲清楚。因为,JavaScript的数组非常特殊,而且如果你能够理解它,那么对于我们学习JSON对象语法就非常容易理解了--因为JSON就是一个数组--我们也...
Javascript模拟的DOS窗Javascript模拟的DOS窗Javascript模拟的DOS窗Javascript模拟的DOS窗Javascript模拟的DOS窗Javascript模拟的DOS窗
完全可用,可以访问我的个人主页查看,这就是我主页上运行的源码 主页地址:https://fir.cm/VmLinux/
基于Vue+JavaScript的驾校模拟考试练习的前端源码(课程大作业).zip基于Vue+JavaScript的驾校模拟考试练习的前端源码(课程大作业).zip基于Vue+JavaScript的驾校模拟考试练习的前端源码(课程大作业).zip基于Vue+...
字典或者哈希表这样的键值对应结构在其他很多语言中都有内置,非常好用,这里我们来看一下JavaScript中实现键值对应的字典与哈希表结构的示例:
本例子是使用iframe来模拟js框架是如何实现所谓的在当前页面弹出弹出框的,实际上就是借助的iframe实现的页面加载,并非有什么真正的弹出框。