原文发表在: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对象是一个用于存储一系列元素的线性集合,它并不直接支持...
5. 哈希表(Hash Table)/字典(Dictionary):通过键值对进行存储,查找速度通常非常快。JavaScript的对象(Object)本质上就是一个哈希表。 6. 树(Tree):包含层级关系的数据结构,如二叉树、平衡树(AVL树、...
JavaScript中的字典(Dictionary)是一种数据结构,它以键值对的形式存储数据,允许通过键来快速访问对应的值。在JavaScript中,Object是最常见的字典实现,因为对象本质上就是键值对的集合。然而,为了更好地理解...
8. **对象与集合数据**:JavaScript的对象是一种无序的键值对集合,键可以是任何不可变类型(如字符串或符号),值可以是任意类型。 这些基础知识构成了JavaScript编程的核心部分,理解并掌握它们对于自学...
下面将详细解释如何使用JavaScript模拟实现哈希表,并探讨其背后的原理。 1. **模拟哈希表的基本思想** 哈希表的核心在于通过键(key)快速定位到值(value)。在JavaScript中,我们可以通过对象(object)来实现...
JavaScript中的Array对象是一个非常灵活且功能强大的数据结构,它不仅可以作为动态数组使用,还可以模拟栈(Stack)和字典(Dictionary)的特性,这使得它在编程中应用非常广泛。 首先,作为动态数组,JavaScript中...
2. **对象和字典结构**:在JavaScript中,对象可以用来模拟字典的数据结构,通过键值对(key-value pairs)存储和检索信息。例如,`let dictionary = {word1: 'definition1', word2: 'definition2'}`,这里的键是...
在JavaScript中,图可用于模拟社交网络、路由问题和网络流等。 了解并熟练掌握这些数据结构对于JavaScript和Node.js开发者来说至关重要,因为它们直接影响到代码的效率和可维护性。实际开发中,根据需求选择合适的...
字典是键值对的集合,与JavaScript的对象类似,但AS中的Dictionary允许非字符串作为键,提供了更灵活的数据存储。 9. 树(Tree) 树数据结构在AS中需要自定义实现,如二叉树或AVL树。树适用于需要快速查找、插入和...
2. 对象(Object):对象是键值对的集合,键通常是字符串,值可以是任意类型。对象可以用来模拟现实世界中的实体,例如用户信息、商品详情等。 3. 字符串(String):字符串是不可变的字符序列,可以使用引号(单...
5. 哈希表(Hash Table)/字典(Dictionary):哈希表提供了一种快速查找和存取数据的方式,通过键值对进行操作。JavaScript对象就是一种简单的哈希表,键通常是字符串,值可以是任何类型。哈希表在实现复杂数据结构...
5. **哈希表(HashMap或Dictionary)**:通过键值对存储数据,查找速度快,通常用于实现快速的存取和查找操作。 6. **集合(Set)**:不包含重复元素的无序数据集,可以进行交集、并集、差集等操作。 7. **树(Tree...
5. 哈希表(Hash Table):在JavaScript中,对象就是哈希表的实现,而Python则有字典(Dictionary),提供快速的键值查找。 6. 树(Tree):如二叉树、平衡树等,例如AVL树和红黑树。Python和JavaScript都需要...
5. 字典(Dictionary/Map):键值对的存储结构,允许通过键来快速查找和修改值。 6. 图(Graph):用于表示节点和边的关系,广泛应用于网络拓扑、路径查找等领域。 7. 树(Tree):如二叉树、红黑树等,是数据组织...
在VBScript中,对象的属性通常通过"obj.property"的方式访问,但根据描述,这里的JSON对象转换后,其属性需要通过"obj("name")"的方式访问,这意味着转换后的对象不是标准的VBScript Collection或Dictionary对象,...
7. **字典与散列列表(Dictionary, Hash List)**:字典是一种键值对的数据结构,通过键来快速查找对应的值。JavaScript中的Map对象实现了这一概念,提供高效的查找和操作。 8. **二叉树(Binary Tree)**:每个...
JavaScript 中可以用数组模拟栈的操作,如 `push`(入栈)和 `pop`(出栈)。 4. **队列(Queue)**:“先进先出”(FIFO)数据结构,常见于任务调度或事件处理。JavaScript 中可以通过数组的 `push` 和 `shift` ...
2. **对象**:AS3的对象是键值对的集合,类似于JavaScript中的对象。你可以通过属性名(键)来存取对象的值。AS3的对象支持原型继承和动态属性,提供了强大的数据封装和扩展能力。 3. **链表**:虽然AS3标准库中...
5. **哈希表(Hash Table)/字典(Dictionary)**:哈希表通过键值对进行存储,提供快速的查找、插入和删除操作。JavaScript的对象(Object)就是一个简单的哈希表,键通常是字符串,值可以是任意类型。 6. **集合...
4. **哈希表**(HashMap或Dictionary):基于键值对的数据结构,提供快速的查找、添加和删除操作。JavaScript的对象就是一种哈希表,键是唯一的,且通常为字符串。 5. **集合**(Set):类似于数组,但不包含重复...