字典是一种以键 - 值对形式存储数据的数据结构,就像电话号码簿里的名字和电话号码一样。要找一个电话时,先找名字,名字找到了,紧挨着它的电话号码也就找到了。这里的键是指你用来查找的东西,值是查找得到的结果。
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 数据结构与算法.pdf 本书主要介绍了 JavaScript 语言的基础知识,包括数据结构和算法。以下是该书的详细知识点: 一、JavaScript 基础知识 * 变量和数据类型 * 运算符和控制结构 * 函数和对象 * 数组和字符串 ...
数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,特别是对于JavaScript这样的通用语言,由于其在服务器端编程中的广泛应用,理解数据结构与算法更是不可或缺。本书《数据...
JavaScript 数据结构与算法是编程领域中的基础,它们是构建高效程序和解决复杂问题的关键工具。在JavaScript中,我们经常使用的数据结构包括数组、栈、队列、链表等。 1. **数组**:数组是最基本的数据结构,它可以...
这个压缩包文件“通过JavaScript来封装实现常见的数据结构与算法.zip”显然是一个学习资源,它可能包含了多种常见数据结构(如数组、链表、栈、队列、树等)以及算法(如排序、搜索、图算法等)的JavaScript实现。...
数据结构与算法是计算机科学的基础,对于任何编程语言来说,理解和掌握它们都是至关重要的,JavaScript也不例外。本资源包“用javascript来介绍数据结构与算法.zip”显然是为了帮助大学生深入理解这些概念,通过...
《JavaScript中的数据结构与算法实践》 在编程领域,数据结构和算法是核心基础,它们是解决问题的关键工具。本文将深入探讨如何在JavaScript这门广泛使用的动态编程语言中实现和应用这些概念。"dsa:使用JavaScript...
本章将重点探讨在JavaScript中如何实现和应用数据结构与算法。 一、数据结构 数据结构是组织和存储数据的方式,它直接影响着我们解决问题的效率。主要的数据结构包括: 1. 数组(Array):最基础的数据结构,用于...
JavaScript 数据结构与算法是编程学习中的重要组成部分,尤其对于JavaScript开发者来说,理解并掌握这些基础知识是提升编程技能的关键。在“从 0 到 1 学习 JavaScript 数据结构与算法”的课程或资料中,你将深入...
在JavaScript中实现数据结构和算法是提升编程技能的关键步骤,特别是在Web开发中,JavaScript作为主要的客户端脚本语言,理解并能熟练运用各种数据结构和算法对于优化代码性能至关重要。这个压缩包“javascript,...
数据结构与算法是计算机科学的基础,对于理解和解决复杂问题至关重要。在编程面试中,它们经常作为衡量候选人技术能力的关键标准。以下是对标题和描述中提到的知识点的详细说明: 1. **数据结构**: - **数组**:...
在“数据结构课程设计-哈希表设计”中,我们将深入探讨哈希表的基本原理、实现方式以及其在实际问题中的应用。 哈希函数是哈希表的核心,它的主要任务是将关键字转换为数组索引。理想的哈希函数应确保关键字的分布...
这个资源包中的"javascript-algorithms-master"可能包含了上述各种数据结构和算法的JavaScript实现,每个实现都配有详细的解释,便于学习者理解和应用。"说明.pdf"很可能是对整个项目的一个概述,包括如何使用、代码...
在这个“JavaScript实现不同的计算机科学算法”的项目中,我们可以通过`javascript-algorithms-master`这个压缩包来学习如何在JavaScript中实现这些算法。 1. **排序算法** - **冒泡排序**:是最简单的排序算法之...
"JS算法 数据结构 精华集.zip"这个压缩包很可能包含了关于JavaScript实现数据结构的实例、教程或代码库,尽管文件名"dfadfasdkj"没有提供具体信息,我们可以根据常见的重要数据结构来展开讨论。 1. **数组**:...
"computer-science-in-js"项目正是这样一个平台,它提供了一系列用JavaScript编写的常见数据结构和算法的实现。 1. **数据结构** - **数组**:JavaScript中最基础的数据结构,可以存储有序的数据集合,支持索引...