Dictionary常被称为数据字典,是一种用来保存键值对的数据结构,比如我们日常的电话本,就是一个Dictionary。我们通过键(名字),就可以访问到对应的值(电话号码)。在C++与java中我们都是使用map来构建这样一个Dictionary,只是名字不同而已。在javascript中对象就好像是一个Dictionary一样,因为对象就是一个属性名/属性值的集合。

为了更好的体现出Dictionary,我们可以基于Array与object来构建一个使用方便简单的Dictionary类:

Dictionary类:

<html>
<head>
<title>Date Example</title>
</head>
<body>
<div id="content"></div>
<input type="button" value="Set InnerHTML" onclick="testDate()"> <script type="text/javascript"> function Dictionary (){
this.dataArray = []; // 添加元素
this.add = function (key, item){
this.dataArray[key] = item;
}; // 查找元素
this.find = function (key){
return this.dataArray[key];
}; // 删除元素
this.remove = function (key){
delete this.dataArray[key];
}; // 显示元素
this.showAllItems = function (){
for (var key in Object.keys(this.dataArray)){
console.log(key + ":" + this.dataArray[key]);
}
} } </script>
</body>
</html>

除了上面这些方法之外,我们也可以根据自己的使用来添加其他的方法与属性。

//   删除字典中所有元素
this.clearAll = function (){
for (var key in Object.keys(this.dataArray)){
delete this.dataArray[key];
}
};
//   字典中的元素个数
this.itemsCount = function (){
var num = 0;
for (var key in Object.keys(this.dataArray)){
++num;
}
return num;
}

在itemsCount中查询数量为什么不直接使用this.dataArray.length呢???这是因为在键的类型为字符串类型的时候,length这个属性就不起什么作用了。。。。

字典的用途大多说时候我们之关心通过键开获取值,不会去关心键的顺序问题,但是为了更好的显示我们前面说的那个电话本,可以对电话本中的键(名字)进行排序。

在javascript中我们常见的是对数组进行排序,那利用数组的sort()进行排序如何呢,你会看到silently。主要原因就是我们平时使用的数组是在数组按照整型值的索引下对数组元素进行排序的,现在的数组的索引变成了字符串,这种形式的排序也就失去了效果。其实我们可以取出Dictionary中的键,把键放入一个数组A中,然后对这个数组A进行排序,然后利用数组A来遍历Dictionary。Object.keys()就提供了这样一种方法:

this.sequenceShow = function (){
for (var key in Object.keys(this.dataArray).sort()){
console.log(key + ":" + this.dataArray[key]);
}
}

这样我们就可以实现把“键”进行排序了。。。

javascript Dictionary data structures的更多相关文章

  1. javascript Set data structures

    集合(set)是一组无序的,但彼此之间又有一定相关性的数据集.每个成员在数组中只能出现一次. 在使用集合(set)之前最好先理解一下内容: 1.不包含任何成员的集合称为空集合. 2.如果两个集合的成员 ...

  2. javascript linkedlist data structures

    在使用C++的时候我们经常会使用到各种容器,这些容器其实就是一种数据结构.在java中其实也是如此.但是由于javascript只给我们提供了一种内置的数据结构数组,准备来说是对象.没有我们常见的那些 ...

  3. JavaScript data types and data structures

    JavaScript data types and data structures Programming languages all have built-in data structures, b ...

  4. 《Python Data Structures》Week5 Dictionary 课堂笔记

    Coursera课程<Python Data Structures> 密歇根大学 Charles Severance Week5 Dictionary 9.1 Dictionaries 字 ...

  5. [Javascript] Avoiding Mutations in JavaScript with Immutable Data Structures

    To demonstrate the difference between mutability and immutability, imagine taking a drink from a gla ...

  6. Go Data Structures: Interfaces

    refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...

  7. 学习笔记之Problem Solving with Algorithms and Data Structures using Python

    Problem Solving with Algorithms and Data Structures using Python — Problem Solving with Algorithms a ...

  8. [译]The Python Tutorial#5. Data Structures

    [译]The Python Tutorial#Data Structures 5.1 Data Structures 本章节详细介绍之前介绍过的一些内容,并且也会介绍一些新的内容. 5.1 More ...

  9. A library of generic data structures

    A library of generic data structures including a list, array, hashtable, deque etc.. https://github. ...

随机推荐

  1. 独立开发人员低成本推广APP的18条技巧

    导语:知道并不等于运行,有些最主要的推广方法往往会被忽略.这些,是自国外开发人员总结出的这18条经验. 如今市面上充满了大牌子大公司和大制作的手机游戏,常常有游戏花300万成本开发,然后再花2000万 ...

  2. S5PV210开发系列三_简易Bootloader的实现

    S5PV210开发系列三 简易Bootloader的实现 象棋小子          1048272975 Bootloader是嵌入式系统上电后第一段运行的代码.对于功能简单的处理器,可能并没有Bo ...

  3. DigCSDN介绍首页

    recrefer=SE_D_DigCSDN">360手机助手下载地址 兴许平台会陆续登陆上线的,大家敬请期待 最后由于屏幕适配和分享链接的问题,导致最后的公布时间延误了好几天--- 今 ...

  4. 45个很实用的 Oracle 查询语句小结

     这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...

  5. Hibernate日期映射类型

    映 射 类 型 Java类型 标准SQL类型 描    述 date java.util.Date或者java.sql.Date DATE 代表日期,形式为: YYYY-MM-DD time java ...

  6. jquery-序列化表单

      createTime--2016年9月25日08:54:48参考链接:http://www.w3school.com.cn/tags/html_ref_urlencode.htmljQuery的s ...

  7. exception ORA-00923: FROM keyword not found where expected

      exception ORA-00923: FROM keyword not found where expected CreationTime--2018年8月16日10点41分 Author:M ...

  8. 【Linux】echo命令

    用途 echo是用于终端打印的基本命令 说明 只需要使用带双引号的文本,结合echo命令就可以将文本打印在终端. [root@localhost test]# echo "Hello Wor ...

  9. 谷歌GSON的字符与对象的互转

    import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...

  10. ORACLE 11G 利用泠备份恢复standby库

    利用泠备份恢复standby数据库 開始使用泠备份进行db恢复 2.1,停止掉standby库 SQL> shutdown immediate; Database closed. Databas ...