`
birchlee
  • 浏览: 4781 次
  • 性别: 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
分享到:
评论

相关推荐

    JavaScript中创建字典对象(dictionary)实例

    在JavaScript中,字典对象(dictionary)是一种用于存储键值对的数据结构,这使得我们能够通过一个唯一的键来快速检索对应的值。由于JavaScript原生的Array对象是一个用于存储一系列元素的线性集合,它并不直接支持...

    数据结构与算法 JavaScript 描述. 章节练习.zip

    5. 哈希表(Hash Table)/字典(Dictionary):通过键值对进行存储,查找速度通常非常快。JavaScript的对象(Object)本质上就是一个哈希表。 6. 树(Tree):包含层级关系的数据结构,如二叉树、平衡树(AVL树、...

    JS中的算法与数据结构之字典(Dictionary)实例详解

    JavaScript中的字典(Dictionary)是一种数据结构,它以键值对的形式存储数据,允许通过键来快速访问对应的值。在JavaScript中,Object是最常见的字典实现,因为对象本质上就是键值对的集合。然而,为了更好地理解...

    JavaScript自学笔记(必看篇).docx

    8. **对象与集合数据**:JavaScript的对象是一种无序的键值对集合,键可以是任何不可变类型(如字符串或符号),值可以是任意类型。 这些基础知识构成了JavaScript编程的核心部分,理解并掌握它们对于自学...

    js 模拟实现类似c#下的hashtable的简单功能代码

    下面将详细解释如何使用JavaScript模拟实现哈希表,并探讨其背后的原理。 1. **模拟哈希表的基本思想** 哈希表的核心在于通过键(key)快速定位到值(value)。在JavaScript中,我们可以通过对象(object)来实现...

    JavaScript中的Array对象使用说明

    JavaScript中的Array对象是一个非常灵活且功能强大的数据结构,它不仅可以作为动态数组使用,还可以模拟栈(Stack)和字典(Dictionary)的特性,这使得它在编程中应用非常广泛。 首先,作为动态数组,JavaScript中...

    dictionary

    2. **对象和字典结构**:在JavaScript中,对象可以用来模拟字典的数据结构,通过键值对(key-value pairs)存储和检索信息。例如,`let dictionary = {word1: 'definition1', word2: 'definition2'}`,这里的键是...

    data-structures:JavaScript数据结构的集合

    在JavaScript中,图可用于模拟社交网络、路由问题和网络流等。 了解并熟练掌握这些数据结构对于JavaScript和Node.js开发者来说至关重要,因为它们直接影响到代码的效率和可维护性。实际开发中,根据需求选择合适的...

    AS 下实现的简单的数据结构

    字典是键值对的集合,与JavaScript的对象类似,但AS中的Dictionary允许非字符串作为键,提供了更灵活的数据存储。 9. 树(Tree) 树数据结构在AS中需要自定义实现,如二叉树或AVL树。树适用于需要快速查找、插入和...

    javascript-datastructure-and-coding-problems:解决JavaScript编码问题

    2. 对象(Object):对象是键值对的集合,键通常是字符串,值可以是任意类型。对象可以用来模拟现实世界中的实体,例如用户信息、商品详情等。 3. 字符串(String):字符串是不可变的字符序列,可以使用引号(单...

    dataStructures_JS:用Javascript练习数据结构

    5. 哈希表(Hash Table)/字典(Dictionary):哈希表提供了一种快速查找和存取数据的方式,通过键值对进行操作。JavaScript对象就是一种简单的哈希表,键通常是字符串,值可以是任何类型。哈希表在实现复杂数据结构...

    data-structure-solutions:这是我对 JavaScript 中常见数据结构和算法问题的解决方案的 repo

    5. **哈希表(HashMap或Dictionary)**:通过键值对存储数据,查找速度快,通常用于实现快速的存取和查找操作。 6. **集合(Set)**:不包含重复元素的无序数据集,可以进行交集、并集、差集等操作。 7. **树(Tree...

    算法实践:python和javascript中的经典编码算法和数据结构。 我将学习更多的编程语言

    5. 哈希表(Hash Table):在JavaScript中,对象就是哈希表的实现,而Python则有字典(Dictionary),提供快速的键值查找。 6. 树(Tree):如二叉树、平衡树等,例如AVL树和红黑树。Python和JavaScript都需要...

    前端项目-buckets.zip

    5. 字典(Dictionary/Map):键值对的存储结构,允许通过键来快速查找和修改值。 6. 图(Graph):用于表示节点和边的关系,广泛应用于网络拓扑、路径查找等领域。 7. 树(Tree):如二叉树、红黑树等,是数据组织...

    asp字符串转json对象类

    在VBScript中,对象的属性通常通过"obj.property"的方式访问,但根据描述,这里的JSON对象转换后,其属性需要通过"obj("name")"的方式访问,这意味着转换后的对象不是标准的VBScript Collection或Dictionary对象,...

    JS数据结构与算法1

    7. **字典与散列列表(Dictionary, Hash List)**:字典是一种键值对的数据结构,通过键来快速查找对应的值。JavaScript中的Map对象实现了这一概念,提供高效的查找和操作。 8. **二叉树(Binary Tree)**:每个...

    js-data-structures:JavaScript的数据结构

    JavaScript 中可以用数组模拟栈的操作,如 `push`(入栈)和 `pop`(出栈)。 4. **队列(Queue)**:“先进先出”(FIFO)数据结构,常见于任务调度或事件处理。JavaScript 中可以通过数组的 `push` 和 `shift` ...

    as3数据结构-中文注释.rar

    2. **对象**:AS3的对象是键值对的集合,类似于JavaScript中的对象。你可以通过属性名(键)来存取对象的值。AS3的对象支持原型继承和动态属性,提供了强大的数据封装和扩展能力。 3. **链表**:虽然AS3标准库中...

    data-structures

    5. **哈希表(Hash Table)/字典(Dictionary)**:哈希表通过键值对进行存储,提供快速的查找、插入和删除操作。JavaScript的对象(Object)就是一个简单的哈希表,键通常是字符串,值可以是任意类型。 6. **集合...

    DataStructures-JS:estudos,exemplos,达科斯州立大学

    4. **哈希表**(HashMap或Dictionary):基于键值对的数据结构,提供快速的查找、添加和删除操作。JavaScript的对象就是一种哈希表,键是唯一的,且通常为字符串。 5. **集合**(Set):类似于数组,但不包含重复...

Global site tag (gtag.js) - Google Analytics