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. ...
随机推荐
- cognos report上钻下钻报表处理方法(1)
cognos report开发中追溯行为,也可以称为上钻下钻行为大致遇到了两种情况 第一种:根据当前报表样式在维度范围内上钻下钻. 第二种:给追溯行为指定报表,传递参数. 可能还有其他情况,这里就不 ...
- 我所认识的PCA算法的princomp函数与经历 (基于matlab)
我接触princomp函数,主要是因为实验室的项目需要,所以我一接触的时候就希望快点学会怎么用. 项目中需要利用PCA算法对大量数据进行降维. 简介:主成分分析 ( Principal Compone ...
- 【PHP 】 伪静态 - 3. 伪静态的基本使用
原理图: 原先浏览器输入的网址会发送到apache服务器,然后apache会调用php模块来处理,最后找到你所想访问的页面; 如果在apahce, httpd.conf文件中开启rewrite机制,则 ...
- 使用sed进行文字替换
范式: sed -i "s/查找内容/替换后内容/g" `grep 查找内容 -rl 查找开始路径` 例子: #sed -i "s/abc/ABC/g" `gr ...
- Mapnik读取PostGIS数据渲染图片
__author__ = 'Administrator' # encoding: utf-8 import sys import datetime import mapnik m = mapnik.M ...
- MAC系统XAMPP 中 MySQL命令行client配置使用
在PHP的学习过程中.MySQL预计是必定会接触的. MySQL的管理相信大家也会使用phpmyadmin: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv ...
- OA项目实战学习(7)——初始化数据&权限配置显示
详细有哪些功能: 初始化数据 权限数据. 超级管理员. Installer.java package cn.xbmu.oa.install; import javax.annotation.Resou ...
- OpenERP7.0中日期的问题
在OpenERP7.0中载入中文语言后,输入某些单据,一些细化到时间的字段输入时会报错,说是日期格式不正确. 解决办法是进入[设置]-[翻译]-[语言]菜单,把时间格式中的值 %I:%M:%S %p ...
- [Python]网络爬虫(七):Python中的正则表达式教程
转自:http://blog.csdn.net/pleasecallmewhy/article/details/8929576#t4 接下来准备用糗百做一个爬虫的小例子. 但是在这之前,先详细的整理一 ...
- 在webBrowser1.Navigate(url)中设置Cookie的注意点
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...