Javascript学习数据结构--字典
定义
字典(dictionary)是一些元素的结合。每个元素有一个称作key的域,不同元素的key各不相同。
其抽象数据类型描述为:
抽象数据类型Dictionary
{
实例:
具有不同关键字的元素组合
操作:
set(key,value):向字典中添加新元素。
delete(key):通过使用键值来从字典中移除键值对应的数据值。
has(key):如果某个键值存在于这个字典中,则返回true,反之则返回false。
get(key):通过键值查找特定的数值并返回。
clear():将这个字典中的所有元素全部删除。
size():返回字典所包含元素的数量。与数组的length属性类似。
keys():将字典所包含的所有键名以数组形式返回。
values():将字典所包含的所有数值以数组形式返回。}
有重复元素的字典(dictionary with duplicates)与上面定义的字典相似,只是它允许多个元素有相同的关键字。在有重复元素的字典中,在进行搜索和删除时需要一个规则来消除歧义。也就是说,如果要搜索关键字为k的元素,那么在所有关键字为k值得元素中应该返回哪一个。
字典可以保存在线性序列(e1,e2,e3...)中,既可以用公式化描述的方式,也可以用链表的方式实现。在字典中,我们用[键,值]的形式来存储数据。
创建字典
//创建一个空的实例数组var items = {};
函数说明
判断某个值是否存在
使用JavaScript中的in操作符来验证一个key是否是items对象的一个属性。
this.has = function (key) {return key in items;
};
添加新元素
直接将value设为items对象的key属性的值。它可以用来给字典添加一个新的值,或者用来更新一个已有的值。
this.set = function (key, value) {items[key] = value; //value设为items对象的key属性的值};
移除键值对应的数据值
remove操作符来从items对象中移除key属性。
this.delete = function (key) {if (this.has(key)) {delete items[key];return true;}return false;
};
查找一个特定的项
使用三目运算符判断,简洁明了。
this.get = function (key) {return this.has(key) ? items[key] : undefined;};
字典所包含的所有数值以数组形式返回
使用has函数来验证key确实存在,然后将它的值加入values数组。
this.values = function () {var values = [];for (var k in items) { //遍历数组if (this.has(k)) {values.push(items[k]); //如果存在,加入数组中}}return values;};
返回在Dictionary类中所有用于标识值的键名
this.keys = function () {return Object.keys(items);};
items属性的输出值
this.getItems = function () {return items;};
移除集合中的所有项
直接将字典集置空
this.clear = function () {items = {}; // 直接制空};
返回集合所包含元素的数量
this.size = function () {return Object.keys(items).length; //返回长度};
测试
//创建字典对象var dictionary = new Dictionary();//添加三个元素dictionary.set('Jack', 'jack@email.com');dictionary.set('John', 'johnsnow@email.com');dictionary.set('yjk', '13118@gmail.com');//判断是否存在console.log(dictionary.has('Gandalf')); //false//返回长度console.log(dictionary.size()); //3//返回字典中的键值console.log(dictionary.keys()); //["Jack", "John", "yjk"]//返回字典的值console.log(dictionary.values()); //["jack@email.com", "johnsnow@email.com", "13118@gmail.com"]//得到yjk的电子邮件console.log(dictionary.get('yjk')); //13118@gmail.com//删除john的内容dictionary.delete('John'); //查看字典console.log(dictionary.keys()); //["Jack", "yjk"]console.log(dictionary.values()); //["jack@email.com", "13118@gmail.com"]console.log(dictionary.getItems()); //{Jack: "jack@email.com", yjk: "13118@gmail.com"}
查看完整源代码
数据结构--字典__源代码
Javascript学习数据结构--字典相关推荐
- Javascript学习数据结构--集合(Set实现)
定义 set是不允许重复元素的集合类型,set体系最常用的是HashSet ,TreeSet, LinkedHashSet.相同的元素是放不进去set的. HasHSet是使用HashMap实现的,只 ...
- JavaScript算法与数据结构——字典详解
字典是一种以键-值对的形式存储数据的数据结构,接下来我们将使用JavaScript实现字典数据结构. 1.定义字典类 由于比较字典数据结构比较简单,就直接上代码好了. class Dictionary ...
- 前端获取div里面的标签_web前端教程JavaScript学习笔记DOM
web前端教程JavaScript学习笔记 DOM一DOM(Document Object Model): 文档对象模型 其实就是操作 html 中的标签的一些能力 我们可以操作哪些内容 获取一个元素 ...
- 在Object-C中学习数据结构与算法之排序算法
笔者在学习数据结构与算法时,尝试着将排序算法以动画的形式呈现出来更加方便理解记忆,本文配合Demo 在Object-C中学习数据结构与算法之排序算法阅读更佳. 目录 选择排序 冒泡排序 插入排序 快速 ...
- 原来Github上也有这么多的JavaScript学习资源!
程序员书库(ID:OpenSourceTop) 编译 书单来自:https://risingstars.js.org/2019/en/ 最近,bestofjs发布了2019年度JavaScript年度 ...
- 从零学习数据结构与算法---基础与课前准备笔记
这里开始学习 数据结构与算法相关知识,这个主要是基于 极客时间 大佬 覃超老师的 算法训练营 和 王争老师的 数据结构与算法之美.这里再次感谢两位老师,下面文章内容主要是自己作为复习使用的笔记,如 ...
- Python学习.第六天.字典
Python学习.第六天.字典 前言 一.什么是字典? 二.字典的原理 三.字典的创建与删除 四.字典的查询操作 五.字典元素的增.删.改操作 1.key的判断: 2.字典元素的删除 3.字典元素的新 ...
- 学习数据结构有什么用?
当我们遇到一个实际问题时,首先需要解决两件事: (1)如何将数据存储在计算机中: (2)用什么方法和策略解决问题. 前者是数据结构,后者是算法.只有数据结构没有算法,相当于只把数据存储到计算机中,而没 ...
- javascript学习路线图
史上最全的javascript学习路线图 JavaSctipt学习路线 完成整个课程大纲需要花上6~8周的时间,将学会完整的JavaScript语言(包括jQuery和一些HTML5).如果你没有时间 ...
最新文章
- 想要快速获客?送你 2 个小程序互推方法
- 上传项目到gitHub,上传报错和删除gitHub上的项目
- C#温故而知新学习系列之XML编程—Xml写入器XmlWriter类(三)
- Java 13 的下载安装教程
- ubuntu中,txt导入mysql数据库文件
- go语言os.exit(1)_Go语言-信号os.Interrupt和信号syscall.SIGTERM的应用
- 别转管理,十年程序员老鸟给新手的几条忠告(转)
- Unicode,ANSI,UTF-8的故事
- 用存储过程实现的分页程序
- 算法基础部分4-深度优先搜索
- 找不到 org/springframework/dao/support/PersistenceExceptionTranslator
- 怎么在云服务器上建网站_如何在云服务器上部署自己的网站?
- 对数周期天线工作原理
- 计算机阴影字 操作步骤,计算机一级Photoshop操作辅导:阴影字
- Error: [$injector:unpr] angular.js
- Express 报错:Failed to lookup view error in views directory 处理
- python 学习简记 《编程导论》 CH4CH5
- MATLAB模糊数据工具箱的使用
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- [电影笔记]电影世界:接纳平凡的自己
热门文章
- 辽宁交通高等专科学校计算机专业宿舍,辽宁省交通高等专科学校宿舍条件怎么样 有独立卫生间和空调吗...
- 计算机等级考试二级Python讲座(二)
- 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作
- 哪个Linux发行版运行kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch
- java抽取注释_JAVA 注解教程(五)注解的提取
- MySQL 的 IFNULL()、ISNULL() 、 NULLIF()、IF() 函数
- c++的提示类未定义_推荐一款适合初学者的C/C++IDE
- linux -rpm,linux 的rpm命令
- 渗透测试入门15之常见端口安全测试
- 远程桌面连接服务器,提示身份验证错误,要求的函数不受支持,但又找不到加密Oracle修正