字典是一种以键 - 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的键是指你用来查找的东西,值是查找得到的结果。
JavaScript 的 Object 类就是以字典的形式设计的。本文将使用 Object 类本身的特性,实现一个 Dictionary 类,让这种字典类型的对象使用起来更加简单。你也可以只使用数组和对象来实现本文展示的方法,但是定义一个 Dictionary 类更方便,也更有意思。比如,使用 () 引用键就比使用 [] 简单。当然,还有其他一些便利,比如可以定义对整体进行操作的方法,举个例子,显示字典中的所有元素,这样就不必在主程序中使用循环去遍历字典了。
字典类的js实现
字典很类似一个关联数组,而js没有提供关联数组这种数据类型,但是我们可以使用对象来很好的模拟,下面我们也将使用字面量对象作为字典类的基础:
function Dictionary() { this.datastore = {};//使用单例模式创建数据集合对象 } //插入一项数据 Dictionary.prototype.add=function(key,value){ this.datastore[key]=value; } //查找某一项 Dictionary.prototype.find=function(key){ return this.datastore[key]; } //移除某一项 Dictionary.prototype.remove=function(key){ delete this.datastore[key]; } //打印输出所有条目 Dictionary.prototype.showAll=function(){ for(var key in this.datastore) { console.log(key + " -> " + this.datastore[key]); } } //计算长度 Dictionary.prototype.conut=function(){ return Object.keys(this.datastore).length; } //清空 Dictionary.prototype.clear=function(){ this.datastore={}; } //排序(不改变原数据) Dictionary.prototype.sort=function(){ var keys=Object.keys(this.datastore).sort(); var res=new Dictionary; for(var i=0;i<keys.length;i++){ res.add(keys[i],this.datastore[keys[i]]); } return res;//返回新的字典 }
测试:
var dic=new Dictionary; //添加四项数据 dic.add("name","likek"); dic.add("age","18"); dic.add("sex","male"); dic.add("country","china"); //输出 dic.showAll(); /* name -> likek age -> 18 sex -> male country -> china */ //查找 dic.find("sex"); "male" //移除 dic.remove("age"); //长度 dic.conut();//3 //排序 var dic2=dic.sort(); //排序后的数据 dic2.showAll(); /* country -> china name -> likek sex -> male */
在<<数据结构与算法javascript描述>>一书中写道:“ Dictionay 类的基础是 Array 类,而不是 Object 类。本章稍后将提到,我们想对字典中的键排序,而 JavaScript 中是不能对对象的属性进行排序的 “。我个人认为这句话是错的,我们知道在js中数组也是对象,如果对数组直接添加字符串类型的键的话,那么对此数组之后的一系列操作实际上和对普通的对象操作是没什么两样的,当然,要实现排序的的话,两者也是一样的方法,几乎没有什么区别。另外,此书中对字典的遍历输出以及字典的排序算法的实现等也错的比较离谱。
相关推荐
本文实例讲述了JS中的算法与数据结构之字典(Dictionary)。分享给大家供大家参考,具体如下: 字典(Dictionary) 字典(Dictionary)是一种以 键-值对 形式存储数据的数据结构 ,就如同我们平时查看通讯录一样,要找一...
算法,没有掌握数据结构和算法的程序员就是耍流氓:oncoming_fist: 之前陆陆续续地刷过一百五十道LeetCode+半本剑指Offer,找到字节跳动实习之后告别了三个月算法:zzz: 重拾数据结构和算法,每天进步一点,从2020.3.2...
leetcode卡 程序 = 数据结构 + 算法,没有掌握数据结构和算法的程序员就是耍流氓 之前断断续续刷过一点算法题,但感觉还是有点云里雾里,决定在从今天2020-10-10开始每天...JavaScript数据结构与算法即LeetCode刷题记录
数据结构与算法JavaScript描述 数组 列表 栈 队列 方块舞舞伴分配问题 基数排序 优先队列 链表 链表的实现 双向链表 循环链表 循环链表应用:约瑟夫环 字典 字典的实现 单词出现次数统计 散列表 散列的实现 散列表...
数据结构与算法学习 时间复杂度和空间复杂度 时间复杂度 算法的时间复杂度表示程序运行所需要的时间,它定性的描述程序运行的时间,用大 O 表示,常见的时间复杂度为 O(1)、O(n)、O(logN)、O(n2)、没有循环的时间...
JavaScript 算法与数据结构 中高级前端」窥探数据结构的世界- ES6 版 刷题训练指南 从头开始复习算法之让你彻底搞清楚 BFS 和 DFS vscode-leetcode 算法学习笔记 JavaScript 实现的算法和数据结构 数据结构和算法必...
使用JavaScript,TypeScript,Go和Java的数据结构和算法问题 数据结构和算法问题,以及针对不同语言的解决方案说明和实现 :bar_chart: 按主题组织 二叉树 -硬 -中 -中 -中 -简单 -中 堆 -中 -困难 弦乐 简单 通过...
数据结构 1.数组 贪心算法 分支算法 动态规划算法 2.字符串 3.队列 4.链表 5.双指针 6.栈 7.堆 8。树 9.二叉搜索树 10.字典树 11.线段树 12.并查集 13.哈希表 14.图 基础算法 1.排序 2.递归 3.二分查找 4.回溯算法 5...
数据结构与算法学习 Leetcode 精选百题题解,按照数据结构与算法进行分类,专项练习,一道一道搞定,理解,融会贯通,基本上就无敌了! 数据结构与算法知识图谱 题目类型 数学 :rainbow::rainbow::rainbow: 数组 :...
本文实例讲述了JS中的算法与数据结构之集合(Set)。分享给大家供大家参考,具体如下: 集合(Set) 同数学中所学的一样,集合(Set)是由一组无序但彼此之间又有一定关系性的成员构成,每个成员在集合中只能出现一次,...
合并应该只需要差异作为输入并返回一个新的差异没有魔法:使任何合并冲突明确以迎合不同的冲突解决机制是可交换的:合并中差异的顺序应该无关紧要递归:为基本数据结构实现差异、补丁和合并,并使用它们来支持复杂的...
排序数据结构项目排序算法的可视化与比较目录: [目录] #Sorting algorithm 来自维基百科,免费的百科全书排序算法是一种将列表元素按特定顺序排列的算法。 最常用的顺序是数字顺序和字典顺序。 高效排序对于优化...
学习JavaScript数据结构和算法基础( )栈(堆栈)类别(队列)链表(LinkedList)单链表(LinkedList)双链表(DoublyLinkedList)循环链表(CircularLinkedList)判断链表是否成环(LinkedListWithCycle)链表插入...
jj-learning 工作学习中的积累,作为沉淀也是财富。有错误的地方或者建议可以 联系我~ 正则 操作系统 linux ubuntu centos 命令行 mac 算法 ...meta-字典 ...a 标签-_blank 危险与 ...数据结构和算法 目录 npm 实用语句 库 j
#数据结构和算法I 第一周的代码研究员作业,练习如何处理数组和字典。 ### Assignment说明:在数据结构数组中实现某些白板问题-字典-大幻灯片。 这些可以在“画布”的“文件”部分下找到 具体来说: 重新实现:...
几乎所有的代码都由某种对一个或多个数据结构进行操作的算法组成。 作为数据结构的真实示例,请考虑字典。 字典是一本将单词与这些单词的定义相关联的书,并按字母顺序组织。 它的组织方式使您可以快速搜索特定词,...
JavaScript 图形库。 以及它的算法朋友。...路线图 图形 有向图 无向###迭代器 特别勋章 广度优先搜索 深度优先搜索###算法 和弦检查器 顶点着色 字典广度优先搜索####寻找路径 A*(未加权图) 普里姆 迪杰斯特拉
其他数据结构:字典,列表,数组,几何,日期,数字和字符串。 算法:调用对象的方法,调用API中定义的算法并定义新功能。 将数据添加到地图。 搜索图像,图像集合和功能集合。 带代数。 运算符:数学,关系和布尔。...
数据结构和算法 队列 在 Python 中通过单元测试实现。 二进制最大堆 在 JavaScript 中实现。 单元测试可以与 mocah 测试一起运行。 堆 用Java实现。 单元测试包含在项目中,并使用堆栈来解决支架平衡问题。 []{{()}}...