javascript Dictionary data structures
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的更多相关文章
- javascript Set data structures
集合(set)是一组无序的,但彼此之间又有一定相关性的数据集.每个成员在数组中只能出现一次. 在使用集合(set)之前最好先理解一下内容: 1.不包含任何成员的集合称为空集合. 2.如果两个集合的成员 ...
- javascript linkedlist data structures
在使用C++的时候我们经常会使用到各种容器,这些容器其实就是一种数据结构.在java中其实也是如此.但是由于javascript只给我们提供了一种内置的数据结构数组,准备来说是对象.没有我们常见的那些 ...
- JavaScript data types and data structures
JavaScript data types and data structures Programming languages all have built-in data structures, b ...
- 《Python Data Structures》Week5 Dictionary 课堂笔记
Coursera课程<Python Data Structures> 密歇根大学 Charles Severance Week5 Dictionary 9.1 Dictionaries 字 ...
- [Javascript] Avoiding Mutations in JavaScript with Immutable Data Structures
To demonstrate the difference between mutability and immutability, imagine taking a drink from a gla ...
- Go Data Structures: Interfaces
refer:http://research.swtch.com/interfaces Go Data Structures: Interfaces Posted on Tuesday, Decembe ...
- 学习笔记之Problem Solving with Algorithms and Data Structures using Python
Problem Solving with Algorithms and Data Structures using Python — Problem Solving with Algorithms a ...
- [译]The Python Tutorial#5. Data Structures
[译]The Python Tutorial#Data Structures 5.1 Data Structures 本章节详细介绍之前介绍过的一些内容,并且也会介绍一些新的内容. 5.1 More ...
- A library of generic data structures
A library of generic data structures including a list, array, hashtable, deque etc.. https://github. ...
随机推荐
- 历尽折腾,终于把Unity3D 的demo发布安卓啦(问题)
只要碰到两个比较蛋疼的问题: 1. Error generating final archive: Debug certificate expired on **** 从字面了解,是由于Debug证书 ...
- isPostback 的原理及作用(很easy)
1.IsPostBack用来推断表单是否是回发. (不是第一次请求),是点击表单的提交button回发过来的.是否是回发与get请求还是Post请求无关.可是普通情况下回发都是Post请求. 一般Ge ...
- Error Lookup工具
GetLastError()获取到的错误代码,可以通过VS2013自带的Error Lookup工具来查询错误的描述.
- JSP基本的语法、3个编译指令、7个动作指令、9个内置对象
一.jsp概述 JSP是java server page的缩写,其本质是一个简化的servlet,是一种动态网页技术标准.jsp页面是在HTML页面中嵌入java程序段.使用jsp开发的应用程序能够跨 ...
- 如何添加EXEStealth 2.5x 壳
http://tools.pediy.com/packers.htm 1 2 3 4 5 分步阅读 Exe加壳,避免被破解逆向.是开发的必备.. 工具/原料 EXEStealth 方法/步骤 查壳 ...
- CSDN日报20170310——《假如我是一行代码》
[程序人生]假如我是一行代码 作者:henry-hacker 我们不止一次在生活中听到"假如我如何如何,我会如何如何"的句式.而这种句式说出来的一般意义无非就是让我们站在还有一个角 ...
- cordova 常用插件
一,插件相关常用命令 1,查看所有已经安装的插件 1 cordova plugin ls 2,安装插件(以camera插件为例) 1 cordova plugin add cordova-plug ...
- MHDD修复硬盘坏道
2种修复的方法,本人已经尝试过,非常管用! 1.先按SHIFT+F3扫描硬盘连接并选择,按F4键,先用一般模式扫一遍,再用高级模式扫一变,具体方法是选择LBA模式,remap项OFF,Loop the ...
- 关闭xp防火墙
在控制面版关闭防火墙 禁用“Security Center”服务 禁用“WindowsFirewall/InternetConnectionSharing(ICS)”服务 删除服务:开始运行CMD,命 ...
- 关于python打包成exe的一点经验之谈
我经常用python写些脚本什么的,有时候脚本写完以后,每次运行都得在IDE打开在运行,很麻烦,所以经常将python编译成exe.SO...有了一点经验,在这和大家分享一下. python ...